home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / os2 / commo70.zip / MACRO.DOC < prev    next >
Text File  |  1996-08-24  |  158KB  |  5,344 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.     {COMMO} (tm)
  7.  
  8.                    "A New Standard in Telecommunications"
  9.  
  10.  
  11.         by Fred P. Brucker
  12.  
  13.  
  14.  
  15.  
  16.  
  17.             Part II
  18.               Macro Programming Guide
  19.  
  20.  
  21.             Release 7.0
  22.               August 24, 1996
  23.  
  24.  
  25.  
  26.  
  27.  
  28.        (C)Copyright 1989-1996  Fred P. Brucker  All Rights Reserved
  29.  
  30.  
  31.  
  32.  
  33. The {COMMO} program and associated on-disk documentation are the property
  34. of Fred P. Brucker (the "author") and may not be sold without permission.
  35. The Shareware version may be distributed, unaltered and as a unit, via
  36. Electronic Bulletin Board Systems.
  37.  
  38. SHAREWARE DISTRIBUTORS and clubs, please see the files VENDINFO.DIZ and
  39. VENDOR.DOC for distribution guidelines.
  40.  
  41.  
  42. THE AUTHOR OF THIS PROGRAM DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR
  43. IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
  44. MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, WITH REGARD TO THE
  45. SOFTWARE, THE ACCOMPANYING WRITTEN MATERIALS AND THE DISKETTES.  IN NO
  46. EVENT SHALL THE AUTHOR BE LIABLE TO YOU FOR ANY CONSEQUENTIAL, SPECIAL,
  47. INCIDENTAL OR INDIRECT DAMAGES OF ANY KIND ARISING OUT OF THE USE OF THE
  48. SOFTWARE, EVEN IF THE AUTHOR HAS BEEN SPECIFICALLY ADVISED OF THE
  49. POSSIBILITY OF SUCH DAMAGES.  IN NO EVENT WILL THE AUTHOR'S LIABILITY
  50. EXCEED THE ACTUAL PRICE PAID FOR THE LICENSE TO USE THE SOFTWARE.
  51.  
  52. YOUR USE OF THIS PROGRAM CONSTITUTES YOUR ACCEPTANCE OF THESE TERMS.
  53.  
  54.  
  55. {COMMO} is a trademark of Fred P. Brucker.  All other trademarks and
  56. registered trademarks referenced in this document are the property of their
  57. respective owners.
  58.  
  59.  
  60.  
  61.                      ================================
  62.                      {COMMO} Registration Information
  63.                      ================================
  64.  
  65.   {COMMO} is a "SHAREWARE" product.  You are entitled to evaluate it for
  66.   30 days.  If it suits your needs and you would like to continue using
  67.   it, then you must pay the licensing fee.  Please use the REGISTRATION
  68.   FORM on the next page.
  69.  
  70.   When you REGISTER you will be licensed to use all future SHAREWARE
  71.   releases of {COMMO}.  You will never have to pay an "update" charge.
  72.   Registration eliminates the startup delay and makes you eligible for
  73.   full technical support.
  74.  
  75.   Call or write for pricing information on MULTI-USER (SITE) and
  76.   DISTRIBUTION licenses.  Discounts are given on quantities of 10 or more.
  77.  
  78.   All prices shown are US DOLLARS.  Please remit US FUNDS on US BANK only.
  79.   NET 30 TERMS will be accepted on purchase orders totalling $100.00 or
  80.   more.
  81.  
  82.   The PRINTED MANUAL is 7 x 8.5 (inches) in size and includes an index.
  83.   The DISKETTE has the latest {COMMO} release plus the latest version of
  84.   the Enhanced MOSTHOST host macro.
  85.  
  86.   For orders, inquiries and support for registered users, call MON-SAT,
  87.   9am-5pm, EASTERN time.  If you get my answering machine, please try
  88.   again later (I cannot return long distance calls).
  89.  
  90.   To register by E-mail on CompuServe or Internet, upload the completed
  91.   Registration Form as a message (text or binary).
  92.  
  93.      MAILING ADDRESS:    Fred P. Brucker
  94.                          P.O. Box 141537
  95.                          Columbus, OH 43214
  96.  
  97.      VOICE TELEPHONE:    (614) 326-1309
  98.      COMPUSERVE:         71021,356
  99.      INTERNET:           71021.356@compuserve.com
  100.  
  101.   PAYMENT OPTIONS:
  102.  
  103.   1) CHECK or MONEY ORDER:  make payable to FRED P. BRUCKER.
  104.  
  105.   2) CREDIT CARD:  fill in the credit card information at the bottom of
  106.      the Registration Form (next page).  Credit card orders may be mailed,
  107.      phoned or E-mailed.
  108.  
  109. --------------------------------------------------------------------------
  110.  
  111.  
  112.  
  113.                  {COMMO} 7.0 SINGLE USER REGISTRATION FORM
  114.  
  115.   Name     _______________________________________________________________
  116.  
  117.   Company name (if company address)   ____________________________________
  118.  
  119.   Address  _______________________________________________________________
  120.  
  121.            _______________________________________________________________
  122.  
  123.            _______________________________________________________________
  124.  
  125.              * All prices include shipping and handling *            Number
  126.                                                                     of Copies
  127.  
  128.   {COMMO} single user license with PRINTED MANUAL and DISKETTE:
  129.          Price in USA/Canada/Mexico ....................... $ 53.00   ____
  130.          OHIO residents (includes sales tax) ..............   56.05   ____
  131.          All other countries ..............................   60.00   ____
  132.  
  133.   {COMMO} single user license, with DISKETTE (manual on disk):
  134.          Price in USA/Canada/Mexico ....................... $ 40.00   ____
  135.          OHIO residents (includes sales tax) ..............   42.30   ____
  136.          All other countries ..............................   42.00   ____
  137.  
  138.                   * All diskettes are 3.5" DS/HD *
  139.  
  140.  
  141.                                       Enter total AMOUNT:   $ ____________
  142.  
  143.   Payment method:  Check__  Money order__  Visa__  MasterCard__
  144.                    Carte Blanche__  Diners Club__  JCB__   PO__
  145.  
  146.  
  147.      INFORMATION FOR CREDIT CARD PURCHASES ONLY:
  148.  
  149.      Card No. ________  ________  ________  ________  Expires ____/____
  150.                                                                mo.  yr.
  151.      Cardholder signature _____________________________________________
  152.  
  153.      Cardholder name __________________________________________________
  154.  
  155.      Daytime telephone  (_____) _____ _______
  156.  
  157. --------------------------------------------------------------------------
  158.  
  159.  
  160.  
  161.  
  162.   Answers to the following questions will help me serve you better in the
  163.   future:
  164.  
  165.   How did you obtain {COMMO}?  (If BBS, please give name and phone number)
  166.  
  167.   ________________________________________________________________________
  168.  
  169.   In general terms, what do you use {COMMO} for?
  170.  
  171.   ________________________________________________________________________
  172.  
  173.   ________________________________________________________________________
  174.  
  175.   What type of computer and modem do you use?
  176.  
  177.   ________________________________________________________________________
  178.  
  179.   ________________________________________________________________________
  180.  
  181.  
  182.   Comments / Questions ___________________________________________________
  183.  
  184.   ________________________________________________________________________
  185.  
  186.   ________________________________________________________________________
  187.  
  188.   ________________________________________________________________________
  189.  
  190.   ________________________________________________________________________
  191.  
  192.  
  193.   Thank you, and I hope you enjoy {COMMO}.
  194.  
  195.  
  196.  
  197.                                     -6-
  198.  
  199. ========
  200. Contents
  201. ========
  202.  
  203.  
  204. Programming {COMMO} Macros  . . . . . . . . . . . . . . . . . . . . . .   9
  205.      Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   9
  206.      Macro Structure  . . . . . . . . . . . . . . . . . . . . . . . . .   9
  207.      Macro Functions  . . . . . . . . . . . . . . . . . . . . . . . . .  10
  208.      Macro Labels . . . . . . . . . . . . . . . . . . . . . . . . . . .  12
  209.      Macro Variables  . . . . . . . . . . . . . . . . . . . . . . . . .  13
  210.      How to Use Variables . . . . . . . . . . . . . . . . . . . . . . .  14
  211.      Reserved Variables . . . . . . . . . . . . . . . . . . . . . . . .  15
  212.      Executing Macros . . . . . . . . . . . . . . . . . . . . . . . . .  16
  213.      Additional Macro Execution Rules . . . . . . . . . . . . . . . . .  16
  214.      Cancelling a Macro . . . . . . . . . . . . . . . . . . . . . . . .  17
  215.      A Macro Example in Detail  . . . . . . . . . . . . . . . . . . . .  17
  216.  
  217. Description of Functions (Alphabetical) . . . . . . . . . . . . . . . .  20
  218.      ALARm  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20
  219.      ASCIiup  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20
  220.      AUTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  22
  221.      BEEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23
  222.      BREAk  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23
  223.      CALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  24
  224.      CALOok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  25
  225.      CAPMode  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26
  226.      CAPTure  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26
  227.      CHATmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  27
  228.      CLEAr  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  27
  229.      COMPare  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  27
  230.      CURSor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  28
  231.      DECRement  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  29
  232.      DIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  29
  233.           Marking Numbers for Dialing . . . . . . . . . . . . . . . . .  31
  234.           Automatic Resumption of Dialing . . . . . . . . . . . . . . .  31
  235.           Testing Success and Failure Results . . . . . . . . . . . . .  31
  236.           Handling Incoming Calls . . . . . . . . . . . . . . . . . . .  32
  237.      DISPlay  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  32
  238.      DIVIde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  33
  239.      DOORway  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  34
  240.      DPARms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  34
  241.      EDIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  35
  242.      ELAPse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  36
  243.      EXECute  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  36
  244.           Using the Direct Switch: EXEC-D . . . . . . . . . . . . . . .  38
  245.           Using the Swap to Disk Switch: EXEC-S . . . . . . . . . . . .  39
  246.           EXECute Preview Mode  . . . . . . . . . . . . . . . . . . . .  39
  247.      EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  40
  248.      FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  40
  249.           Getting file information: FILE, FILE-X  . . . . . . . . . . .  41
  250.           Selecting files: FILE-S . . . . . . . . . . . . . . . . . . .  42
  251.      FONFile  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  42
  252.  
  253.  
  254.  
  255.                                     -7-
  256.  
  257.      GETString  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  43
  258.      GOLOok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  45
  259.      GOTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  45
  260.      HANGup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  46
  261.      HELP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  47
  262.      HOLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  47
  263.      IFCArrier  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  47
  264.      IFCOndition  . . . . . . . . . . . . . . . . . . . . . . . . . . .  48
  265.      IFERrorlevel . . . . . . . . . . . . . . . . . . . . . . . . . . .  50
  266.      IFEXist  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  51
  267.      INCRement  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  52
  268.      INFOrm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  52
  269.      INITmodem  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  53
  270.      INPUt  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  54
  271.      INSTring . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  54
  272.      KEYStuff . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  55
  273.      LENGth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  55
  274.      LIGHts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  56
  275.      LOCAlecho  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  56
  276.      LOOKfor  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  56
  277.      MACRo  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  59
  278.      MARK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  60
  279.      MENU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  60
  280.      MULTiply . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  63
  281.      NOCArrier  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  63
  282.      NOOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  64
  283.      OFFLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  64
  284.      PARMs  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  64
  285.      PASSword . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  66
  286.      PAUSe  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  66
  287.      POPStack . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  67
  288.      PRINtlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  67
  289.      PUSHstack  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  68
  290.      RCLOse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  68
  291.      READ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  69
  292.      RETUrn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  69
  293.      ROPEn  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  70
  294.      RTRAn  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  71
  295.      RXMOdem  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  72
  296.      RYMOdem  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  72
  297.      RZMOdem  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  74
  298.      SCREen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  75
  299.      SCROllback . . . . . . . . . . . . . . . . . . . . . . . . . . . .  76
  300.      SEND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  76
  301.      SETDial  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  77
  302.      SETEsc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  78
  303.      SETGet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  79
  304.      SETLook  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  80
  305.      SETR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  82
  306.      SETUp  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  82
  307.      SETVariable  . . . . . . . . . . . . . . . . . . . . . . . . . . .  83
  308.      SFICtrl  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  84
  309.      SHELl  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  85
  310.  
  311.  
  312.  
  313.                                     -8-
  314.  
  315.      SIGNal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  85
  316.      SOUNd  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  86
  317.      SPDCtrl  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  86
  318.      SPOCtrl  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  87
  319.      SSLOok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  88
  320.      STATusline . . . . . . . . . . . . . . . . . . . . . . . . . . . .  88
  321.      STOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  89
  322.      STRAn  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  89
  323.      SUBString  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  90
  324.      SXMOdem  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  91
  325.      SYMOdem  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  91
  326.      SZMOdem  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  92
  327.           File Specifications . . . . . . . . . . . . . . . . . . . . .  93
  328.      TOGGles  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  94
  329.      UNLOad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  94
  330.      UNMArk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  95
  331.      VIDEo  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  95
  332.      VTCUr  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  96
  333.      VTPAd  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  96
  334.      WCLOse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  97
  335.      WINDow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  97
  336.      WOPEn  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  97
  337.      WRITe  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  98
  338.  
  339. For APPENDICES see Part I, COMMO.DOC. . . . . . . . . . . . . . . . . . 100
  340.  
  341.  
  342.  
  343.                                     -9-
  344.  
  345. ==========  Programming {COMMO} Macros
  346.  
  347. IMPORTANT!  Please read the next few pages before you attempt to write any
  348. macros!  The rules for writing {COMMO} macros are few in number, but must
  349. be followed carefully.
  350.  
  351. Examples of more complex macro programming are given in the sample Macro
  352. File COMMO.MAC, in the supplied file SAMPLES.MAC and in the Host Mode and
  353. Guide macros.  A macro from SAMPLES.MAC is discussed in detail at the end
  354. of this section.
  355.  
  356. The following pages assume familiarity with {COMMO}'s key commands and with
  357. other features of the program.  Since many macro functions have
  358. corresponding key commands, duplicate explanations will not be given here.
  359. Refer to the description of the key command in Part I (COMMO.DOC).
  360.  
  361.  
  362. -----=====  Overview
  363.  
  364. {COMMO}'s Macro Files may contain any number of macros and are limited in
  365. size to 64k bytes each (total of 128k if auxiliary Macro File is used).
  366.  
  367. Macros are "interpreted," which implies the following:
  368.  
  369.      (1)  Macros are not processed in any way until execution begins.
  370.           Rules for starting macros are listed under "Executing Macros"
  371.           later in this section.
  372.  
  373.      (2)  Only macros within the currently loaded Macro File(s) are
  374.           available for immediate use.
  375.  
  376.      (3)  Macros added or modified with the Internal Editor are ready for
  377.           execution without additional processing.
  378.  
  379. COMMO.MAC is the resident Macro File.  An auxiliary Macro File may be
  380. loaded (or replaced) at any time using the CALL and GOTO functions (or
  381. manually within the Macro File window).  See the individual descriptions of
  382. the CALL, GOTO and RETUrn functions for details.  See also Appendix K for
  383. more information on Macro Files.
  384.  
  385. Macro Files may be compiled to increase speed, to reduce size and to
  386. improve security of source code.  See "Alt+M  Macro File" in Part I
  387. (COMMO.DOC) for details.
  388.  
  389.  
  390. -----=====  Macro Structure
  391.  
  392. Macros consist of a series of items enclosed in curly braces.  Multiple
  393. items may be placed on the same line, but a single item may not be split
  394. between lines.  Lines may be up to 255 characters in length and all text
  395. outside the curly braces is commentary and is ignored when macros are
  396. executing.
  397.  
  398.  
  399.  
  400.                                     -10-
  401.  
  402. There are two types of items: "functions" and "labels."
  403.  
  404.      Functions are action items.  Some are equivalent to {COMMO} key
  405.      commands, such as DIAL, while others are unique to the macro language,
  406.      such as SETVariable.
  407.  
  408.      Labels are macro entry points and may be placed anywhere within the
  409.      Macro File.
  410.  
  411.  
  412. -----=====  Macro Functions
  413.  
  414. Each macro function is described in detail later in this document.  See
  415. also Appendix J "Macro Functions Listed by Class."
  416.  
  417.  
  418. The general form of any macro function is:
  419.  
  420.      {name-switches arg1,arg2,...,argn}
  421.  
  422.           name
  423.                The function name describes the action to be performed and
  424.                consists of four or more characters. Only the first four are
  425.                significant and case is ignored.
  426.  
  427.           switches
  428.                These are used to alter the operation of a function.  Each
  429.                switch is a single letter and may be followed by a numeric
  430.                value, usually "1" or "0" to indicate "yes" or "no"
  431.                respectively.
  432.  
  433.                Switches have default interpretations when the numeric value
  434.                is omitted, or when the switch is not present.
  435.  
  436.                Switches must be separated from the name with a hyphen (no
  437.                intervening spaces).  They may be upper or lower case.
  438.  
  439.                See individual function descriptions for details (note that
  440.                only certain functions have switches).
  441.  
  442.           args
  443.                A SINGLE SPACE separates the arguments from the function
  444.                name and switches.
  445.  
  446.                Individual arguments are separated with commas and may
  447.                contain no extraneous spaces (all spaces are significant).
  448.  
  449. NOTE:  Curly braces may be represented within macro functions by using ^(
  450. for { and ^) for }.
  451.  
  452.  
  453.  
  454.                                     -11-
  455.  
  456. Examples:
  457.  
  458.      {send Hi, how are you?}
  459.  
  460.           This function sends the string "Hi, how are you?" to the modem.
  461.           SEND has only one argument -- the string to send out.  Since the
  462.           string is the last argument, it may contain commas and spaces.
  463.           Quotes are not used to define strings.
  464.  
  465.      {ifcon-LE label1,label2}
  466.  
  467.           The IFCOndition function tests for conditions set by other
  468.           functions, such as COMPare.  Here two switches are present,
  469.           telling {COMMO} to test for less than or equal:
  470.  
  471.                L    Test for "less than."
  472.                E    Test for "equal."
  473.  
  474.           The two arguments are labels to GOTO depending on the conditions.
  475.  
  476.           Notice that "name-switches" may be written in a number of
  477.           different ways:
  478.  
  479.                ifco-LE  ifcondition-EL  ifcond-LE
  480.  
  481.      {asci-S0E1 path\filename}
  482.  
  483.           The ASCII Upload function will send the file indicated by
  484.           "path\filename."  The switches override current settings and tell
  485.           {COMMO}:
  486.  
  487.                S0   Do NOT strip linefeeds.
  488.                E1   DO expand blank lines (may also be written "E").
  489.  
  490.      {sound}   {sound yes}
  491.  
  492.           The first function will TOGGLE Master Sound ON/OFF (since there
  493.           is no argument).  The second will turn the sound ON.
  494.  
  495.  
  496. One very important function is the STOP function.  It is used to terminate
  497. macro execution and may appear in either its long form or short form:
  498.  
  499.      ... {stop}     long form
  500.      ... {}         short form
  501.  
  502. Macro execution continues until a STOP function is executed.  Be sure to
  503. use one or execution will continue into the next macro in the Macro File!
  504.  
  505.  
  506.  
  507.                                     -12-
  508.  
  509. -----=====  Macro Labels
  510.  
  511. Labels are identifiers consisting of one or more characters.  When a label
  512. is defined, it must be preceded by a colon.  References to labels, such as
  513. {goto label}, do not require the colon.
  514.  
  515. IMPORTANT!  {COMMO} always searches for labels from the beginning of the
  516. auxiliary Macro File (if one is loaded), then from the beginning of the
  517. resident Macro File.  This means that if a label is duplicated within the
  518. files, the first occurrence will be used.
  519.  
  520. Only the first eight characters in a label are significant.  Case is
  521. ignored.  All characters above ASCII 27 are allowed in labels except the
  522. following:
  523.  
  524.      colon           ":"
  525.      space           " "
  526.      comma           ","
  527.      slash           "/"
  528.      curly braces    "{" or "}"
  529.  
  530. Examples:
  531.  
  532.      {:mailrun} {call login} ...
  533.  
  534.      {:start-here} {:another.entry} {send Begin now!} ...
  535.  
  536.  
  537. A number of three character labels are reserved and are called "key-
  538. labels."  When the corresponding key is pressed from the Terminal Screen,
  539. {COMMO} will look for the key-label in the current Macro File(s).  If the
  540. key-label is found, macro execution will begin at that location.
  541.  
  542. Any default key assignment may be overridden using a key-label.  For
  543. example, pressing Alt+D normally enters the Dialing Directory.  But suppose
  544. this line is in the Macro File:
  545.  
  546.      {:ald} {clear} {}
  547.  
  548. Now pressing Alt+D will clear the screen.
  549.  
  550. There are predefined key-labels and user-defined key-labels.  See Appendix
  551. H "{COMMO} Macro Key-labels" for complete details.
  552.  
  553.  
  554.  
  555.                                     -13-
  556.  
  557. -----=====  Macro Variables
  558.  
  559. {COMMO} maintains a String Variable Space in which variables appear in the
  560. form:
  561.  
  562.      name,string
  563.  
  564.           name
  565.                An identifier consisting of one or more characters of which
  566.                only the first eight are significant.  Case is ignored.  The
  567.                following are the ONLY valid characters that may be used in
  568.                a variable name:
  569.  
  570.                     "A" through "Z"
  571.                     "a" through "z"
  572.                     "0" through "9"
  573.                     "_" underscore
  574.  
  575.                All other characters will terminate the name.
  576.  
  577.           string
  578.                A text string.  The string must not contain ASCII 0, 10 or
  579.                13 (null/cr/lf).  If a string is set to null (0 characters),
  580.                it is deleted from variable space.  Note the difference
  581.                between the null character (ASCII 0) and a null string (0
  582.                characters).
  583.  
  584.                NOTE:  Any variable not defined is considered to be null.
  585.  
  586.                Strings consisting of only the digits 0-9 and representing a
  587.                decimal number from 0 to 4,294,967,295 (2^32-1) are also
  588.                numeric variables.  There is no other difference between
  589.                string and numeric variables.
  590.  
  591.                The maximum length of strings is 240 characters.
  592.  
  593. The String Variable Space may be viewed from within the Macro File window
  594. (see Online Help).  The amount of unused string space will also be shown.
  595.  
  596. Once a variable is defined, it remains in String Variable Space until it is
  597. redefined or deleted (set to null).  Therefore variables should be deleted
  598. or re-used to prevent String Variable Space from becoming full.
  599.  
  600. The default size of String Variable Space is 3072 bytes, but it may be
  601. adjusted with the "vsp" item in the Setup File or with the "/v" command
  602. line switch at program startup.  The valid range is from 1 to 64 kilobytes.
  603. See also "Command Line Options" in Part I (COMMO.DOC).
  604.  
  605.  
  606.  
  607.                                     -14-
  608.  
  609. ----------  How to Use Variables
  610.  
  611. {COMMO} variables may be set (or "defined") in numerous ways:
  612.  
  613.      1)  With the SET item in the Setup File.
  614.      2)  By various macro functions (e.g., SETVariable).
  615.      3)  By variable strings at the end of a Dialing Directory entry.
  616.      4)  During execution of certain program operations.
  617.  
  618. Variables are used (or "referenced") in macro function arguments and in the
  619. telephone number field of the Dialing Directory.  See also "Alt+D  Dialing
  620. Directory" in Part I (COMMO.DOC).
  621.  
  622. When a variable name appears, the string assigned to the name is
  623. substituted for the name.  If the variable is null, then the name is
  624. replaced with 0 characters.  {COMMO} will expand the variables in a macro
  625. function before executing it.
  626.  
  627. In order to distinguish variable names from other parts of function
  628. arguments, they must be preceded with a percent sign "%" (use two
  629. consecutive percent signs if a percent sign is needed in the data).
  630.  
  631. The end of the variable name is indicated by another "%" or by the first
  632. character that is not allowed in a name (see list of characters above).
  633.  
  634.  
  635. A variable definition example:
  636.  
  637.      {setvar animal,Elephant} or {setvar %animal,Elephant}
  638.  
  639.           Notice that the "%" is not required (but is permitted) when the
  640.           variable name is the first argument of a function that defines,
  641.           modifies or tests the value of a variable.  Other such functions
  642.           include INPUt, GETString, INCRement, DECRement, COMPare,
  643.           SUBString, INSTring, READ.
  644.  
  645.           If the variable name itself needs to be a variable, then use two
  646.           percent signs:
  647.  
  648.                {setv %%animal,Elephant}
  649.  
  650.  
  651. Variable usage examples:
  652.  
  653.      {setvar animal,Elephant}
  654.      {send %animal}
  655.           Sends "Elephant" to the modem.
  656.      {send animal}
  657.           Sends "animal".
  658.      {send %animal%s are large animals}
  659.           Sends "Elephants are large animals".  Note that the trailing "%"
  660.           is required here.
  661.  
  662.  
  663.  
  664.                                     -15-
  665.  
  666.      {setvar animal,Elephant}
  667.      {setv creature,animal}
  668.      {send creature}
  669.           Sends "creature".
  670.      {send %creature}
  671.           Sends "animal".
  672.      {setv %%creature,Giraffe}
  673.      {send %animal}
  674.           Sends "Giraffe".
  675.  
  676.  
  677. IMPORTANT!  Variables may NOT be substituted within the function name or
  678. switches.  They may be substituted anywhere else, even for the commas
  679. separating arguments.
  680.  
  681. See "SETVariable" for additional examples and more ways to set variables.
  682.  
  683.  
  684. ----------  Reserved Variables
  685.  
  686. Certain variables have fixed names so that {COMMO} can find them whenever
  687. they are needed.  The names of these variables begin with an underscore
  688. character "_".  There are two types of reserved variables: "user-defined"
  689. and "built-in" (see Appendix I "List of Reserved Variables" for a complete
  690. list).
  691.  
  692. USER-DEFINED reserved variables are defined in the same way that you define
  693. ordinary variables -- in the Setup File using SET, or in a macro using
  694. functions such as SETVariable, INPUt, etc.  These variables define strings
  695. used by certain program features.  For example, the path\filename of the
  696. Usage Log is defined in the Setup File as follows:
  697.  
  698.      {set _uselog,c:\commo\commo.log}
  699.  
  700. BUILT-IN variables are defined by {COMMO} based on current system
  701. parameters.  Examples are:
  702.  
  703.      _cap
  704.           Current Capture File path\filename
  705.  
  706.      _tim
  707.           Current time of day
  708.  
  709. Any variable that starts with the same four characters as a built-in
  710. variable ("_" plus the next three) will be considered the same variable.
  711. For example "_pas" may be written "_password" and "_yea" may be written
  712. "_year".
  713.  
  714. {COMMO} will always search String Variable Space first when looking up the
  715. value of any variable.  This allows built-in variables to be overridden,
  716. but only when using their four character minimum names.  For example, to
  717. override the serial port number, you must use "_por", not "_port".
  718.  
  719.  
  720.  
  721.                                     -16-
  722.  
  723. See Appendix I for a complete list of reserved variables.
  724.  
  725.  
  726. -----=====  Executing Macros
  727.  
  728. Macro execution may be started in any of the following ways:
  729.  
  730. 1)   Open the Macro File window by pressing Alt+M.  Position the Selector
  731.      Bar at the desired starting point and press Enter.  The macro will
  732.      begin executing at the first macro label or function on the line.
  733.  
  734.      NOTE:  Macros started with the Selector Bar do not need macro labels
  735.      and may be started at any point within the macro.
  736.  
  737. 2)   If a macro label is also a key-label, then you may press that key from
  738.      the Terminal Screen.  Note that if the same key-label appears more
  739.      than once, the first occurrence will be used.
  740.  
  741. 3)   A macro may be linked to a Dialing Directory entry (Linked Macro).  In
  742.      this case {COMMO} will GOTO the macro when a connection is established
  743.      with that system (or optionally CALL it, see the DIAL function).
  744.  
  745. 4)   A startup macro may be specified in the Setup File using the "mac"
  746.      item.
  747.  
  748. 5)   A startup macro may be specified on the command line with the switch
  749.      "/:label".  This will override the Setup File macro.
  750.  
  751. 6)   A macro may be an argument of another function such as CALL, GOTO,
  752.      DIAL or SETLook.
  753.  
  754. Some macro functions show their current action on the Status Line.  In
  755. addition, a "face" character near the middle of the Status Line indicates
  756. that a macro is executing.
  757.  
  758.  
  759. -----=====  Additional Macro Execution Rules
  760.  
  761. Characters may be typed to the serial port during functions that wait
  762. (LOOKfor, GETString, PAUSe, HOLD, etc.).  Command keys (e.g., Alt+D) will
  763. be ignored during macro execution (except in Doorway Mode).
  764.  
  765. Functions will execute IN SEQUENCE until one of the following conditions
  766. occurs:
  767.  
  768. 1)   A CALL, GOTO, RETURn, STOP, EXIT, etc. is encountered.
  769.  
  770. 2)   Control is transferred to an alternate macro from certain functions
  771.      when a special condition occurs.  An example of this is the SETLook
  772.      function.  The alternate will execute when a subsequent LOOKfor times
  773.      out.
  774.  
  775.  
  776.  
  777.                                     -17-
  778.  
  779. 3)   A Macro Error occurs (and SETR has not been executed).  This will
  780.      bring up the Macro File window with the Selector Bar on the problem
  781.      line.  The macro will be terminated.
  782.  
  783. 4)   The end of a Macro File is reached.
  784.  
  785.  
  786. -----=====  Cancelling a Macro
  787.  
  788. The Esc key is used to terminate macro execution.  To type an <esc> code
  789. (ASCII 27) to the remote during macro execution (without terminating the
  790. macro), press Ctrl+[ (Ctrl + left bracket).
  791.  
  792. Current function execution may be terminated by pressing Ctrl+Break.  For
  793. example, this can be used to terminate a LOOKfor, PAUSe or HOLD
  794. prematurely.  Macro execution will advance to the next function.
  795.  
  796. If a macro contains a function that brings up a {COMMO} window (Dialing
  797. Directory, Capture File Options, etc.), then Esc will exit the window and
  798. execution continues with the next function.  To terminate macro execution
  799. from a window, press Ctrl+Break.
  800.  
  801. NOTE:  The SETEsc function may be used to help prevent accidental
  802. termination of macros.
  803.  
  804.  
  805. -----=====  A Macro Example in Detail
  806.  
  807. The following macro example from SAMPLES.MAC can be used to log in to many
  808. types of Bulletin Board Systems.  This is a Linked Macro, so the label
  809. "login" would appear in the Dialing Directory macro field for each system
  810. that uses it.  When you dial and connect to one of the systems, {COMMO}
  811. will automatically GOTO the macro.
  812.  
  813. The subroutine "gls" (generic login subroutine) can also be called from
  814. macros that perform mailruns and other BBS operations.
  815.  
  816. Note that labels and functions may be placed side by side on the same line
  817. (up to 255 characters).  For purposes of this example each item is placed
  818. on its own line.
  819.  
  820. The main routine at "login" performs some initial functions and then calls
  821. the subroutine at "gls".  The subroutine looks for various prompts,
  822. responds to them and returns after responding to the "password" prompt.
  823.  
  824.  
  825. {:login}
  826.      The entry point.  All labels begin with a ":".
  827.  
  828. {capture y,c:\commo\commo.cap}
  829.      "y" means open the Capture File.  The path\filename of the file is
  830.      specified here, otherwise the current Capture File (if one is defined)
  831.      would be opened.
  832.  
  833.  
  834.  
  835.                                     -18-
  836.  
  837.  
  838. {asci ,}
  839.      Set ASCII Upload to "no pacing."
  840.  
  841. {call gls}
  842.      CALL the macro at "gls".  When the subroutine executes a RETUrn,
  843.      control will come back here.
  844.  
  845. {}
  846.      STOP and resume manual operation in the Terminal Screen.  Without this
  847.      STOP execution would continue into subsequent macros.  Remember that
  848.      labels are "passed over" during sequential macro execution.
  849.  
  850. {:gls}
  851.      The entry point of the "gls" subroutine.
  852.  
  853. {setlook 60,hng,10,|}
  854.      This function specifies parameters that go into effect whenever a
  855.      LOOKfor executes.  It tells {COMMO} to wait up to 60 seconds for the
  856.      string (or strings) and to GOTO the label "hng" if none of the strings
  857.      appear within that time.  The timer is restarted each time a LOOKfor
  858.      begins to execute.
  859.  
  860.      This SETLook also specifies that a "|" (carriage return) should be
  861.      sent to the modem whenever 10 seconds have elapsed and no characters
  862.      are received.  This is used to respond to prompts that are not
  863.      explicitly specified in SSLOoks/CALOoks/GOLOoks/LOOKfors (e.g., "Press
  864.      any key to continue").
  865.  
  866.      Use this latter facility with care since a BBS may spend time
  867.      processing and not actually be expecting input from the caller.  The
  868.      carriage returns sent will accumulate and be used to satisfy later
  869.      prompts, causing things to get out of "sync."  Adjust the 10 second
  870.      timeout as needed.
  871.  
  872. {setv ss_r,~|}
  873. {setv ss_yr,~y|}
  874.      Variables are set for some common responses.  They will be used later
  875.      by SSLOok functions.  For convenience, these variables may be defined
  876.      in the Setup File (using the "set" keyword).
  877.  
  878.      SSLOoks, CALOoks and GOLOoks store strings to look for, but do not
  879.      wait for the strings (only a LOOKfor can do the actual waiting).
  880.  
  881. {:li1}
  882. {sslo ss_r,(enter)}
  883. {sslo ss_yr,graphics (enter)}
  884. {sslo ss_yr,is this correct}
  885.      The SSLOoks will send the strings in the variables when the respective
  886.      targets are received.  The looking for all of the stored strings then
  887.      resumes.
  888.  
  889. {calo li1,li2,first name}
  890.  
  891.  
  892.  
  893.                                     -19-
  894.  
  895. {calo li1,li3,last name}
  896.      CALOoks will CALL the second label if the target string appears (the
  897.      LOOKfor is terminated).  When the macro executes a RETUrn, control
  898.      goes to the first label where all of the strings can be set up again.
  899.      Note that CALOoks are used here for demonstration.  SSLOoks could be
  900.      used as well (and probably should be).
  901.  
  902. {golo li1,;passwor}
  903.      A GOLOok will set up a string and GOTO the label if the string appears
  904.      (only one label is used).  In this example the specified string is to
  905.      be ignored.  This was needed for a BBS that used the string
  906.      "first;last;password" prior to the actual password prompt.
  907.  
  908. {lookfor password}
  909.      This is where the actual "looking" takes place.  Remember that
  910.      SSLOoks, CALOoks and GOLOoks only cause strings to be stored but do
  911.      not actually wait for the strings.
  912.  
  913.      The LOOKfor will wait for the string specified and also any other
  914.      stored strings (up to 16 total).  If the string in the LOOKfor
  915.      appears, control passes to the next macro function.
  916.  
  917.      "password" is assumed to be the last prompt in the login sequence.
  918.  
  919. {send ~%_pas|}
  920.      Control then passes here and the string is sent to the modem.  The
  921.      tilde (~) causes a half-second delay before sending the password.  The
  922.      password in the Dialing Directory entry was stored into the built-in
  923.      variable "_pas" when dialing began.
  924.  
  925.      Finally, a carriage return (|) is sent.
  926.  
  927. {return}
  928.      This will RETUrn to the "login" macro.
  929.  
  930. {:li2}
  931. {send ~Firstname|}
  932.      Response to "first name".
  933.  
  934. {return}
  935.  
  936. {:li3}
  937. {send ~Lastname|}
  938.      Response to "last name".
  939.  
  940. {return}
  941.  
  942.  
  943.  
  944.                                     -20-
  945.  
  946. ==========  Description of Functions (Alphabetical)
  947.  
  948. The purpose of this section is to show the syntax of each function and the
  949. meaning of its arguments through examples.  All functions are listed here,
  950. but details for functions which are also default key commands are found in
  951. Part I (COMMO.DOC) under "{COMMO} Key Commands."
  952.  
  953. Function names are shown with their four-letter abbreviations in uppercase.
  954.  
  955. For consistency, the following conventions are used in many functions:
  956.  
  957.      "y" or "yes" is used to indicate "yes", "on",  "open",  etc.
  958.      "n" or "no"  is used to indicate "no",  "off", "close", etc.
  959.  
  960.  
  961. ===  ALARm  ===
  962.  
  963. Default key:   none
  964. Description:   Ring the alarm.
  965.  
  966. Switches:
  967.  
  968.      F1 or F
  969.           Make the "failed" sound.
  970.  
  971.      F0
  972.           Make the "success" (ringing) sound (default).
  973.  
  974. Examples:
  975.  
  976.      {alarm}
  977.           Ring alarm, use ring count in Setup File.
  978.  
  979.      {alarm 2}
  980.           Ring alarm 2 times.
  981.  
  982. {COMMO} will wait until the alarm has stopped ringing before proceeding to
  983. the next macro function (the alarm may be terminated early by pressing a
  984. key).
  985.  
  986.  
  987. ===  ASCIiup  ===
  988.  
  989. Default key:   Alt+A
  990. Description:   Upload an ASCII (text) file.
  991.  
  992. General form:
  993.  
  994.      {ASCIiup path\filename[\],pace}
  995.  
  996.           path\filename
  997.                The complete path and filename (if the path is absent, the
  998.                current directory will be used).
  999.  
  1000.  
  1001.  
  1002.                                     -21-
  1003.  
  1004.  
  1005.                If a path only is used (signified by a "\" at the end) the
  1006.                ASCII Upload window will open, prompting you to enter the
  1007.                filename.
  1008.  
  1009.           pace
  1010.                The Line Pacing character to be used.
  1011.  
  1012. Switches:
  1013.  
  1014.      E1 or E
  1015.           Expand blank lines.  A space will be sent when a zero-character
  1016.           line is encountered.
  1017.  
  1018.      E0
  1019.           Do not expand blank lines.
  1020.  
  1021.      S1 or S
  1022.           Strip linefeeds from outgoing text.
  1023.  
  1024.      S0
  1025.           Do not strip linefeeds.
  1026.  
  1027.      If a switch is absent, the current setting of the toggle will be used.
  1028.      The toggles are initialized in the Setup File and may be changed for
  1029.      the session from the Alt+T menu.
  1030.  
  1031.      Switches apply to the current function only and do not affect the
  1032.      settings of the toggles.
  1033.  
  1034. Examples:
  1035.  
  1036.      {asci}
  1037.           Open ASCII Upload window.
  1038.  
  1039.      {asci-S}
  1040.           Open ASCII Upload window, strip linefeeds when file is sent.
  1041.  
  1042.      {asci %uldir%\}
  1043.           Open ASCII Upload window, prompt with the current value of the
  1044.           variable "uldir".
  1045.  
  1046.      {asci c:\msgs\file.xyz,:}
  1047.           Upload "file.xyz."  Use ":" for pacing.
  1048.  
  1049.  
  1050.  
  1051.                                     -22-
  1052.  
  1053.      {asci-E0 c:\msgs\file.xyz}
  1054.           Upload "file.xyz."  Use current Pacing Character, do not expand
  1055.           blank lines.
  1056.  
  1057.      {asci c:\msgs\file.xyz,}
  1058.           Upload "file.xyz."  Do not use pacing.
  1059.  
  1060.      {asci ,?}
  1061.           Set current Pacing Character to "?"
  1062.  
  1063.      {asci ,}
  1064.           Set current pacing to "no" pacing.
  1065.  
  1066. The Pacing Character may be entered according to the rules shown in
  1067. Appendix D.  For example, "^m" or "|" may be used to represent the carriage
  1068. return.
  1069.  
  1070.  
  1071. ===  AUTO  ===
  1072.  
  1073. Default key:   none
  1074. Description:   Maintain Auto Receive strings.
  1075.  
  1076. General form:
  1077.  
  1078.      {AUTO label,string}
  1079.  
  1080.           label
  1081.                Label to GOTO when the string is received.
  1082.  
  1083.           string
  1084.                String to look for, may be up to 32 characters.
  1085.  
  1086. Examples:
  1087.  
  1088.      {auto}
  1089.           Clear all Auto Receive strings.
  1090.  
  1091.      {auto zmodem,^XB00}
  1092.           Zmodem Auto Receive string.
  1093.  
  1094. Note that up to 16 Auto Receive strings may be in effect at the same time
  1095. (including any strings defined with the "aut" item in the Setup File).
  1096.  
  1097. Use this function with no arguments to clear all strings when necessary
  1098. (you cannot clear an individual string).
  1099.  
  1100. See also "TIPS on creating LOOKfor strings" under LOOKfor.
  1101.  
  1102.  
  1103.  
  1104.                                     -23-
  1105.  
  1106. ===  BEEP  ===
  1107.  
  1108. Default key:   none
  1109. Description:   Play a sequence of sounds.
  1110.  
  1111. Examples:
  1112.  
  1113.      {beep 36,440,18,523}
  1114.           Play an A note for two seconds followed by a C note for one
  1115.           second.
  1116.  
  1117.      {beep}
  1118.           Default is a short beep sound.
  1119.  
  1120. Listed arguments are treated as pairs.  The first number of each pair is
  1121. the duration of the sound in 18ths of a second (system clock ticks).  The
  1122. second number is the frequency in Hz (0 to 19 is silence).
  1123.  
  1124. Here is a frequency chart for five octaves:
  1125.  
  1126.      C         131     262     523     1040     2093
  1127.      C#/Db     139     277     554     1103     2217
  1128.      D         147     294     587     1176     2349
  1129.      D#/Eb     156     311     622     1241     2489
  1130.      E         165     330     659     1311     2637
  1131.      F         175     349     698     1391     2794
  1132.      F#/Gb     185     370     740     1488     2960
  1133.      G         196     392     784     1568     3136
  1134.      G#/Ab     208     415     831     1662     3322
  1135.      A         220     440     880     1760     3520
  1136.      A#/Bb     233     466     932     1866     3729
  1137.      B         248     494     988     1973     3951
  1138.  
  1139.  
  1140. ===  BREAk  ===
  1141.  
  1142. Default key:   Alt+B
  1143. Description:   Send a break.
  1144.  
  1145. Switches:
  1146.  
  1147.           Tn
  1148.                Set break duration in system clock ticks.  "n" may range
  1149.                from 1 to 999.  There are 18.2 clock ticks per second.
  1150.  
  1151.           T0 or T
  1152.                Set break duration to 18 clock ticks (default).
  1153.  
  1154.  
  1155.  
  1156.                                     -24-
  1157.  
  1158. Examples:
  1159.  
  1160.      {break}
  1161.           One second break.
  1162.  
  1163.      {break-t9}
  1164.           One-half second break.
  1165.  
  1166.      {break-t55}
  1167.           Three second break.
  1168.  
  1169.  
  1170. ===  CALL  ===
  1171.  
  1172. Default key:   none
  1173. Description:   Execute a macro subroutine.
  1174.  
  1175. General form:
  1176.  
  1177.      {CALL label,filename}
  1178.  
  1179.           label
  1180.                The label that begins the subroutine to be executed.
  1181.  
  1182.           filename
  1183.                The name of the Macro File where the label is to be found.
  1184.                This argument is OPTIONAL and is normally used only if the
  1185.                file is not already loaded.  Do NOT specify a path; the
  1186.                {COMMO} home directory will be used.
  1187.  
  1188. Switches:
  1189.  
  1190.           F1 or F
  1191.                Force loading of the specified file (as the auxiliary file).
  1192.                No filename comparison will be made.
  1193.  
  1194.           F0
  1195.                Compare filenames.  If the file is already loaded (resident
  1196.                or auxiliary), it will not be reloaded (default).
  1197.  
  1198. Examples:
  1199.  
  1200.      {call abc}
  1201.           Execute subroutine "abc".
  1202.  
  1203.      {call abc,other.mac}
  1204.           Execute subroutine "abc" in the auxiliary Macro File "other.mac".
  1205.  
  1206. CALL will push the return location onto the macro stack; then it will
  1207. transfer control to the given label.  When a RETUrn is executed, the
  1208. location will be popped and control will return to the function following
  1209. the CALL.  If the CALL is located in the auxiliary Macro File, the filename
  1210. will be saved on the macro stack along with the return location.
  1211.  
  1212.  
  1213.  
  1214.                                     -25-
  1215.  
  1216.  
  1217. If a filename is specified, {COMMO} will check to see if the file is
  1218. already loaded (resident or auxiliary).  If not, the file will be loaded as
  1219. the auxiliary (the current auxiliary will be saved to disk if there are any
  1220. outstanding changes).
  1221.  
  1222. TIPS on using CALL:
  1223.  
  1224.  *   It isn't necessary to specify a filename if the target label is in the
  1225.      resident Macro File or in the current auxiliary file.
  1226.  
  1227.  *   A Macro Error will result if either the label or the file do not
  1228.      exist.
  1229.  
  1230.  *   If the label is not found in the auxiliary Macro File, {COMMO} will
  1231.      also search the resident Macro File.
  1232.  
  1233.  *   CALLs may be nested up to 32 deep.
  1234.  
  1235.  *   Use GOTO when you want to load or execute macros in another file and
  1236.      you do not need to return.  This will prevent the macro stack from
  1237.      filling with "dead" entries.
  1238.  
  1239.  *   Do not modify a Macro File while a CALL from that file is active (the
  1240.      return location may be invalidated).
  1241.  
  1242. See also RETUrn, GOTO, PUSHstack, POPStack, UNLOad, Appendix K.
  1243.  
  1244.  
  1245. ===  CALOok  ===
  1246.  
  1247. Default key:   none
  1248. Description:   CALL a label when a string appears.
  1249.  
  1250. General form:
  1251.  
  1252.      {CALOok label1,label2,target}
  1253.  
  1254.           label1
  1255.                The location to return to after label2 is CALLed.
  1256.  
  1257.           label2
  1258.                The label to CALL when the target is received from the
  1259.                serial port.
  1260.  
  1261.           target
  1262.                The ASCII string to look for.  The string begins following
  1263.                the "," and is terminated by the "}".
  1264.  
  1265. CALOok is used in conjunction with the LOOKfor function.  It sets up an
  1266. additional string to look for.  When the target string appears, a CALL is
  1267. made to "label2."  When the routine executes a RETUrn, control will pass to
  1268. "label1".  This is equivalent to:
  1269.  
  1270.  
  1271.  
  1272.                                     -26-
  1273.  
  1274.  
  1275.      {call label2} {:label1} ...
  1276.  
  1277. See LOOKfor for details, examples and tips on using CALOok.
  1278.  
  1279. See also SSLOok, GOLOok, SETLook.
  1280.  
  1281.  
  1282. ===  CAPMode  ===
  1283.  
  1284. Default key:   none
  1285. Description:   Set Capture Mode.
  1286.  
  1287. Examples:
  1288.  
  1289.      {capmode screen}
  1290.           Set Capture Mode to SCREEN.
  1291.  
  1292.      {capmode filter}
  1293.           Set Capture Mode to FILTER.
  1294.  
  1295.      {capmode raw}
  1296.           Set Capture Mode to RAW.
  1297.  
  1298. See also CAPTure.
  1299.  
  1300.  
  1301. ===  CAPTure  ===
  1302.  
  1303. Default key:   Alt+1
  1304. Description:   Capture File Options.
  1305.  
  1306. Switches:
  1307.  
  1308.      N1 or N
  1309.           Do not wait for a keypress if the disk fills up while capturing
  1310.           (a message is displayed for several seconds).  The setting
  1311.           remains in effect until the Capture File is closed.
  1312.  
  1313.           NOTE:  This switch is effective only on a CAPTure function that
  1314.           successfully opens a Capture File.
  1315.  
  1316.      N0
  1317.           Wait for Esc to be pressed if the disk fills up (default).
  1318.  
  1319. Examples:
  1320.  
  1321.      {capture}
  1322.           Open Capture File Options window.
  1323.  
  1324.      {capture y}
  1325.           Open current Capture File.
  1326.  
  1327.  
  1328.  
  1329.                                     -27-
  1330.  
  1331.      {capture n}
  1332.           Close current Capture File.
  1333.  
  1334.      {capt y,c:\commo\file.xyz}
  1335.           Open indicated Capture File.
  1336.  
  1337.      {capt n,c:\dl\newfile.cap}
  1338.           Close current Capture File, set new file as indicated.
  1339.  
  1340. The current Capture File will always be closed when a new file is opened.
  1341.  
  1342. IMPORTANT!  If the disk fills while capture is open, a "disk full" message
  1343. will appear (see the "N" switch above) and the file will be closed.  The
  1344. built-in variable "_dfc" will be set to 1.
  1345.  
  1346. See also CAPMode.
  1347.  
  1348.  
  1349. ===  CHATmode  ===
  1350.  
  1351. Default key:   Alt+- (Alt minus)
  1352. Description:   Set Chat Mode toggle.
  1353.  
  1354. Examples:
  1355.  
  1356.      {chat}
  1357.           Toggle Chat Mode on/off.
  1358.  
  1359.      {chat y}
  1360.           Turn on Chat Mode.
  1361.  
  1362.      {chat n}
  1363.           Turn off Chat Mode
  1364.  
  1365.  
  1366. ===  CLEAr  ===
  1367.  
  1368. Default key:   Alt+C
  1369. Description:   Clear Terminal Screen to default colors.
  1370.  
  1371. Example:
  1372.  
  1373.      {clear}
  1374.           No arguments.
  1375.  
  1376.  
  1377. ===  COMPare  ===
  1378.  
  1379. Default key:   none
  1380. Description:   Compare a string or numeric variable.
  1381.  
  1382.  
  1383.  
  1384.                                     -28-
  1385.  
  1386. General form:
  1387.  
  1388.      {COMPare name,string}
  1389.  
  1390.           name
  1391.                The name of a variable.
  1392.  
  1393.           string
  1394.                A string of ASCII characters.
  1395.  
  1396. Examples:
  1397.  
  1398.      {comp pword,aardvark}
  1399.           Test if the variable "pword" is set to "aardvark."
  1400.  
  1401.      {comp pword}
  1402.           Test if "pword" is null.
  1403.  
  1404.      {comp pword,}
  1405.           Test if "pword" is null.
  1406.  
  1407.      {comp nmbr,5}
  1408.           Compare a numeric variable.
  1409.  
  1410.      {comp abc,%xyz}
  1411.           Test if the variable "abc" is equal to the variable "xyz."
  1412.  
  1413. A numeric variable is a string of ASCII digits, 0-9, forming a positive
  1414. integer.  If the number is outside the allowed range or contains non-
  1415. numeric characters, the results of the compare will be unpredictable.
  1416.  
  1417. COMPare will set flags which can be tested with the IFCOndition function.
  1418.  
  1419.      The Condition Flag will be set to "true" if the two arguments are
  1420.      identical strings (case is ignored).  Otherwise it will be set to
  1421.      "false."
  1422.  
  1423.      The Numeric Flag will be set to "equal", "less than" or "greater
  1424.      than."  This flag is unpredictable unless both arguments are valid
  1425.      numeric variables.
  1426.  
  1427. A variable may be tested for being null (no entry in variable space) by
  1428. omitting the second argument (or by comparing to a null variable).
  1429.  
  1430. See also IFCOndition.
  1431.  
  1432.  
  1433. ===  CURSor  ===
  1434.  
  1435. Default key:   none
  1436. Description:   Terminal Screen cursor on/off.
  1437.  
  1438.  
  1439.  
  1440.                                     -29-
  1441.  
  1442. Examples:
  1443.  
  1444.      {cursor}
  1445.           Toggle Terminal cursor on/off.
  1446.  
  1447.      {curs y}
  1448.           Turn on Terminal Screen cursor.
  1449.  
  1450.      {curs n}
  1451.           Turn off Terminal Screen cursor.
  1452.  
  1453.  
  1454. ===  DECRement  ===
  1455.  
  1456. Default key:   none
  1457. Description:   Subtract a number from a numeric variable.
  1458.  
  1459. Examples:
  1460.  
  1461.      {decr count}
  1462.           Subtract 1 from the variable "count".
  1463.  
  1464.      {decr apples,200}
  1465.           Subtract 200 from "apples".
  1466.  
  1467. The default for the second argument is 1.
  1468.  
  1469. If the result is less than 0 or if either argument is out of range, then
  1470. the variable will be set to the string "ERROR".
  1471.  
  1472. If the variable is not numeric, the results will be unpredictable.
  1473.  
  1474. See also INCRement.
  1475.  
  1476.  
  1477. ===  DIAL  ===
  1478.  
  1479. Default keys:  Alt+D, Alt+N
  1480. Description:   Open Dialing Directory, dial marked systems.
  1481.  
  1482. General form:
  1483.  
  1484.      {DIAL tries,label1,label2}
  1485.  
  1486.           tries
  1487.                The maximum number of dialing tries.  If no connection is
  1488.                established when the try count is exhausted, the macro in
  1489.                the second argument will be started.  May be 0 to 999.  "0"
  1490.                means unlimited.  Default is 0.
  1491.  
  1492.  
  1493.  
  1494.                                     -30-
  1495.  
  1496.           label1
  1497.                A macro to GOTO if the try count in the first argument is
  1498.                exhausted.  If no macro is specified or if the macro label
  1499.                is invalid, control will pass to the next function.  Default
  1500.                is none.
  1501.  
  1502.                If the "C" switch is used, the macro will be CALLed.  When a
  1503.                RETUrn is executed, control will return to the DIAL
  1504.                function.
  1505.  
  1506.           label2
  1507.                A macro to GOTO when a response is matched during the Inter-
  1508.                dial Delay.  Response strings may be listed in the reserved
  1509.                variable "_dialir" and are usually defined in the Setup
  1510.                File.  If no macro is specified or if the macro label is
  1511.                invalid, the response is ignored.
  1512.  
  1513.                If the "C" switch is used, the macro will be CALLed.  When a
  1514.                RETUrn is executed, control will return to the DIAL
  1515.                function.
  1516.  
  1517. Switches:
  1518.  
  1519.      C1 or C
  1520.           Specifies that macros will be started via CALL (instead of GOTO).
  1521.           When the macros execute a RETUrn, control returns to the DIAL
  1522.           function and Multi Number Dialing will resume.
  1523.  
  1524.           The "C" switch applies to the Linked Macro (from the Dialing
  1525.           Directory), the "tries exhausted" macro and to the Inter-dial
  1526.           Delay macro.
  1527.  
  1528.      C0
  1529.           Start DIAL macros via GOTO (default).
  1530.  
  1531. Examples:
  1532.  
  1533.      {dial}
  1534.           Open Dialing Directory window (similar to Alt+D).
  1535.  
  1536.      {dial ,}
  1537.           Multi Number Dial (similar to Alt+N).
  1538.  
  1539.      {dial 25,abc}
  1540.           Multi Number Dial with try count.
  1541.  
  1542.      {dial-C ,}
  1543.           Multi Number Dial, macros will be CALLed.
  1544.  
  1545.      {dial-c ,,inter}
  1546.           Multi Number Dial with Inter-dial Delay macro.
  1547.  
  1548.  
  1549.  
  1550.                                     -31-
  1551.  
  1552. ----------  Marking Numbers for Dialing
  1553.  
  1554. Numbers may be marked in one of several ways:
  1555.  
  1556.      1)   Manually in the Dialing Directory window.
  1557.      2)   By placing Dialing Strings on the {COMMO} command line.
  1558.      3)   Using the MARK macro function.
  1559.  
  1560. Marked numbers will be redialed in sequence.  If a connection occurs and a
  1561. valid Linked Macro is specified in the Dialing Directory, the macro will be
  1562. started via GOTO (or CALL if the "C" switch is present).  If no Linked
  1563. Macro is specified in the Dialing Directory or if the macro label is
  1564. invalid, macro execution will STOP.
  1565.  
  1566. If no numbers are marked when executing the DIAL, control will pass to the
  1567. next function.
  1568.  
  1569.  
  1570. ----------  Automatic Resumption of Dialing
  1571.  
  1572. Here are two methods for resuming at the end of a Linked Macro.  Both allow
  1573. multiple systems to be called without operator intervention.
  1574.  
  1575.      1)   Use the "C" switch on the DIAL function.  Each Linked Macro
  1576.           should end with a RETUrn which will transfer control back to the
  1577.           DIAL.  When all numbers have been called, control will pass to
  1578.           the function following the DIAL.
  1579.  
  1580.      2)   At the end of each Linked Macro (after logging off), GOTO a macro
  1581.           such as this:
  1582.  
  1583.             {:nocar} {pause 1} {ifcarrier nocar} {dial ,} {}
  1584.  
  1585.           This ensures that carrier has dropped before DIALing the next
  1586.           number.  The PAUSe allows data to display on the screen while
  1587.           waiting for carrier to drop.
  1588.  
  1589.  
  1590. ----------  Testing Success and Failure Results
  1591.  
  1592. Details about a successful or failed dialing attempt are available in
  1593. several reserved variables (see Appendix I "List of Reserved Variables" for
  1594. complete descriptions):
  1595.  
  1596.      _dtc
  1597.           Dialing termination code
  1598.  
  1599.      _dialrt
  1600.           Dialing response text
  1601.  
  1602.      _mod
  1603.           Speed reported by modem (normally in the CONNECT or CARRIER
  1604.           response)
  1605.  
  1606.  
  1607.  
  1608.                                     -32-
  1609.  
  1610.  
  1611. After a successful attempt the variables "_dialrt" and "_mod" may be tested
  1612. in your Linked Macro.  For example, if you expected a high-speed connect
  1613. and the speed reported was 2400 or 1200, then you may want to hang up and
  1614. try again later.
  1615.  
  1616. You can get control after each failed attempt by using "DIAL 1", with or
  1617. without a macro.  For example:
  1618.  
  1619.      {dial-c 1,nocon} ...
  1620.           The Linked Macro and the "no connect" macro will be CALLed (the
  1621.           "C" switch).  The variables "_dtc" and "_dialrt" may be tested in
  1622.           the macro at "nocon".
  1623.  
  1624.      {dial 1} ...
  1625.           Control will pass to the next function if a dialing attempt fails
  1626.           or when no more systems are marked (test "_dtc" to determine
  1627.           which).
  1628.  
  1629. If the testing indicates that the system should not be dialed again (e.g.,
  1630. it did not answer, _dtc=3), the UNMArk function can be used with the "L"
  1631. switch to unmark the last number dialed: {unmark-l}.
  1632.  
  1633.  
  1634. ----------  Handling Incoming Calls
  1635.  
  1636. Most modems return the string "RING" when a call comes in.  If this happens
  1637. during the Inter-dial Delay, you may choose to stop dialing (to answer a
  1638. voice call) or to send a brief message to a modem caller (during a BBS
  1639. event, for example).
  1640.  
  1641. Use "label2" on the DIAL function to process responses during the Inter-
  1642. dial Delay.  For example:
  1643.  
  1644.      {dial ,,incoming}
  1645.  
  1646. The macro at "incoming" will execute if the modem sends an Inter-dial Delay
  1647. response string (these are normally defined in the Setup File with the
  1648. "_dialir" variable).
  1649.  
  1650. See also SETDial, MARK, UNMArk.
  1651.  
  1652.  
  1653. ===  DISPlay  ===
  1654.  
  1655. Default key:   none
  1656. Description:   Display a string to the screen.
  1657.  
  1658. General form:
  1659.  
  1660.      {DISPlay row,col,attr,string}
  1661.  
  1662.  
  1663.  
  1664.                                     -33-
  1665.  
  1666.           row
  1667.                The row where the string will display.
  1668.  
  1669.           col
  1670.                The column where the string will display.
  1671.  
  1672.           attr
  1673.                The attribute (colors) of the string.
  1674.  
  1675.           string
  1676.                The text of the string (no quotes).
  1677.  
  1678. Examples:
  1679.  
  1680.      {display 12,20,17,Hello!}
  1681.           Display "Hello!" at row 12, column 20.  Colors are white on blue.
  1682.  
  1683.      {disp ,,,Hello, again.^m^j}
  1684.           Display "Hello, again." at the current cursor using the current
  1685.           attribute, followed by a cr/lf.
  1686.  
  1687.      {disp 3,40}
  1688.           Position the cursor at row 3, column 40.
  1689.  
  1690. TIPS on using DISPlay:
  1691.  
  1692.  *   The attribute is specified in the same manner as the colors in the
  1693.      Setup File (press F7 in the Internal Editor to display the Color
  1694.      Chart).
  1695.  
  1696.  *   Setting background colors to high intensity values will cause blinking
  1697.      (for example, using "9" instead of "1" will still give a blue
  1698.      background but the foreground character will blink).  
  1699.  
  1700.  *   After the string is displayed, the previous Terminal Screen attribute
  1701.      will be restored.
  1702.  
  1703.  *   Conversion is performed on the string according to the rules in
  1704.      Appendix D.
  1705.  
  1706.  
  1707. ===  DIVIde  ===
  1708.  
  1709. Default key:   none
  1710. Description:   Divide a numeric variable by a number.
  1711.  
  1712. Example:
  1713.  
  1714.      {divi space,1024}
  1715.           Divide "space" by 1024.
  1716.  
  1717. The divisor (second argument) is limited to 65535 (default is 1).
  1718.  
  1719.  
  1720.  
  1721.                                     -34-
  1722.  
  1723. The named variable will be set to the quotient, the built-in variable
  1724. "_rem" will be set to the remainder.
  1725.  
  1726. If the divisor is zero or if either argument is out of range, then the
  1727. variable will be set to the string "ERROR".
  1728.  
  1729. If the variable is not numeric, the results will be unpredictable.
  1730.  
  1731.  
  1732. ===  DOORway  ===
  1733.  
  1734. Default key:   Alt+=
  1735. Description:   Toggle Doorway Mode.
  1736.  
  1737. Switches:
  1738.  
  1739.      S1 or S
  1740.           Status Line on when entering Doorway Mode.
  1741.  
  1742.      S0
  1743.           Status Line off (default).
  1744.  
  1745.      M0
  1746.           Do not display Doorway enter/exit messages.
  1747.  
  1748.      M1
  1749.           Display enter/exit messages (default).
  1750.  
  1751. Examples:
  1752.  
  1753.      {doorway}
  1754.           Toggle Doorway Mode on/off.
  1755.  
  1756.      {door-S}
  1757.           Status Line on when entering Doorway Mode.
  1758.  
  1759.      {doorway-M0}
  1760.           Do not display enter/exit messages.
  1761.  
  1762. The "S" switch is ignored when exiting Doorway Mode (the Status Line will
  1763. be restored to its prior state).
  1764.  
  1765.  
  1766. ===  DPARms  ===
  1767.  
  1768. Default key:   Alt+P
  1769. Description:   Set default Terminal Parameters
  1770.  
  1771. General form:
  1772.  
  1773.      {DPARms speed,format,comport,terminal-type,delay}
  1774.  
  1775.  
  1776.  
  1777.                                     -35-
  1778.  
  1779.           speed
  1780.                The bps rate: 2400, 38400, etc.
  1781.  
  1782.           format
  1783.                The data format: 8n1, 7e1, etc.
  1784.  
  1785.           comport
  1786.                The serial port number: 1-16.
  1787.  
  1788.           terminal
  1789.                The terminal-type: A, V or T.
  1790.  
  1791.           delay
  1792.                The inter-character delay factor: 0-999.
  1793.  
  1794. Examples:
  1795.  
  1796.      {dparms 38400,8,1,,20}
  1797.           Set 38400 bps, 8n1, Com1, delay=20.
  1798.  
  1799.      {dparms ,,4,V}
  1800.           Set Com4 VT102.
  1801.  
  1802.      {dparms 19200,7o1}
  1803.           Set 19200 bps, 7o1.
  1804.  
  1805. IMPORTANT!  Omitted parameters are not changed.
  1806.  
  1807. These are the parameters that are set whenever a number is DIALed.  Any of
  1808. them may be overridden in a Dialing Directory entry.
  1809.  
  1810. The speed field is also used to indicate INT 14 driver mode.  See Appendix
  1811. L for details.
  1812.  
  1813. See also PARMs.
  1814.  
  1815.  
  1816. ===  EDIT  ===
  1817.  
  1818. Default key:   none
  1819. Description:   Edit an external file.
  1820.  
  1821. Example:
  1822.  
  1823.      {edit c:\autoexec.bat}
  1824.           Edit AUTOEXEC.BAT file.
  1825.  
  1826. EDIT may be used to edit any text file up to 64k in length.  The rules are
  1827. the same as for editing a support file with the Internal Editor.  See
  1828. Appendix K for more information.
  1829.  
  1830.  
  1831.  
  1832.                                     -36-
  1833.  
  1834. TIPS on using EDIT:
  1835.  
  1836.  *   Any data beyond the last cr/lf pair will be removed prior to editing. 
  1837.      There must be at least one valid line in the file or an error will
  1838.      result.
  1839.  
  1840.  *   The file will be saved unconditionally when Alt+F is pressed or
  1841.      conditionally (if changes were made) when Esc is pressed.  The file is
  1842.      "saved in place" (no backup).
  1843.  
  1844.  
  1845. ===  ELAPse  ===
  1846.  
  1847. Default key:   none
  1848. Description:   Reset the elapsed timer to 0:00.
  1849.  
  1850. Example:
  1851.  
  1852.      {elap}
  1853.           No arguments.
  1854.  
  1855. NOTE:  The elapsed timer is automatically reset whenever dialing begins and
  1856. when a connection is made with a remote system.
  1857.  
  1858.  
  1859. ===  EXECute  ===
  1860.  
  1861. Default key:   none
  1862. Description:   Execute a DOS command.
  1863.  
  1864. Switches:
  1865.  
  1866.      A1 or A
  1867.           Sound the alarm at the end of command execution.
  1868.  
  1869.      A0
  1870.           Do not sound the alarm (default).
  1871.  
  1872.      D1 or D
  1873.           Execute an external program directly, without use of the command
  1874.           processor (see details below).
  1875.  
  1876.      D0
  1877.           Use the command processor (default).
  1878.  
  1879.      M1 or M
  1880.           Display "Swapping to Disk" just prior to swapping (default).
  1881.  
  1882.      M0
  1883.           Do not display the swapping message.
  1884.  
  1885.  
  1886.  
  1887.                                     -37-
  1888.  
  1889.      N1 or N
  1890.           Do NOT clear the screen before execution.  This is useful when
  1891.           running programs that clear or rewrite the screen.  Also for
  1892.           simple DOS functions like changing directories, renaming files,
  1893.           etc.  
  1894.  
  1895.      N0
  1896.           Clear the screen (default).
  1897.  
  1898.      S1 or S
  1899.           Swap to Disk before executing the program (see details below).
  1900.  
  1901.      S0
  1902.           Do not swap to disk (default).
  1903.  
  1904.      W
  1905.           Wait for a key press before restoring the Terminal Screen.  This
  1906.           is useful if you need to see the results of the command
  1907.           execution.
  1908.  
  1909.      Wn
  1910.           Wait for "n" seconds, "n" may range from 0 to 999.  Press a key
  1911.           to cancel the wait.
  1912.  
  1913.           NOTE:  Default (no "W" switch) is no wait.
  1914.  
  1915. Examples:
  1916.  
  1917.      {exec-AW3 hslink -P%_por %pr_file -U%pr_down}
  1918.           {COMMO} will prepare the HS/Link command by expanding the "%"
  1919.           variables, then call DOS to execute the program.
  1920.  
  1921.           See the section "Macro Variables" for complete details on
  1922.           variable substitution.
  1923.  
  1924.           The alarm will sound at completion (the "A" switch) and {COMMO}
  1925.           will wait for three seconds (the "W3" switch) before restoring
  1926.           the Terminal Screen.
  1927.  
  1928.      {execute-DN c:\utils\list.com %_cap}
  1929.           The LIST program will be directly executed with the current
  1930.           Capture File path\filename as a command line argument.  The
  1931.           screen will not be cleared (LIST will rewrite the screen). 
  1932.           {COMMO} will return immediately to the Terminal Screen when LIST
  1933.           exits.
  1934.  
  1935. The EXECute function enables you to "build" a command to be executed by
  1936. DOS.  The DOS command processor (COMMAND.COM) is normally used (see below),
  1937. which implies that you may specify any command as you would type it from
  1938. the DOS prompt.
  1939.  
  1940.  
  1941.  
  1942.                                     -38-
  1943.  
  1944. Thus you can execute batch files and internal DOS commands (REN, DEL,
  1945. etc.).  Also you can omit command paths and extensions (if the command is
  1946. in your PATH or is in the current directory).
  1947.  
  1948. Character conversion is performed in the EXECute function.  This enables
  1949. you to specify control characters.  For example:
  1950.  
  1951.      {exec echo ^L> prn}   Send a formfeed to the printer
  1952.  
  1953. See Appendix D for details on conversion.  Note that the vertical bar "|"
  1954. is NOT converted to a carriage return in the EXECute function.  
  1955.  
  1956. Key codes may be placed in the keyboard buffer prior to EXECute using the
  1957. KEYStuff function.
  1958.  
  1959.  
  1960. ----------  Using the Direct Switch: EXEC-D
  1961.  
  1962. Use this switch to execute .EXE and .COM programs without the use of the
  1963. command processor (usually COMMAND.COM).
  1964.  
  1965. The program's Exit Code (called ERRORLEVEL in batch files) is saved and may
  1966. be tested with the IFERrorlevel function.  The Exit Code is also available
  1967. in the variable "_err".
  1968.  
  1969. There are several advantages to using the "D" switch:
  1970.  
  1971. 1)   Only the memory needed to run the program is required (the command
  1972.      processor requires that about 32k be available, even if the program
  1973.      being run is much smaller).
  1974.  
  1975. 2)   About 4k of memory is saved by not having a copy of the command
  1976.      processor resident when the program is running.
  1977.  
  1978. 3)   The program executes faster, since COMMAND.COM is not loaded from
  1979.      disk.
  1980.  
  1981. 4)   The program's Exit Code is preserved and may be tested with the
  1982.      {COMMO} IFERrorlevel function.
  1983.  
  1984. Two important rules must be followed when using the "D" switch:
  1985.  
  1986. 1)   The full path\filename of the program file must be specified,
  1987.      including the path where the file resides on disk and the file
  1988.      extension.  For example:
  1989.  
  1990.           {exec-D c:\util\list.com file.txt}
  1991.  
  1992. 2)   Only .EXE and .COM files may be run (batch files and internal DOS
  1993.      commands cannot be executed without COMMAND.COM).
  1994.  
  1995.  
  1996.  
  1997.                                     -39-
  1998.  
  1999. ----------  Using the Swap to Disk Switch: EXEC-S
  2000.  
  2001. Using the "S" switch will free up most of the memory used by {COMMO}.  The
  2002. program and data will be saved to a special disk file.  The path\filename
  2003. of this file is specified with "swp" in the Setup File (under "Paths and
  2004. Files").  If the Swap File cannot be created or there is not enough disk
  2005. space for the swap, the EXECute (or SHELl) will be attempted without
  2006. swapping.
  2007.  
  2008. When the program or shell exits back to {COMMO}, everything will be
  2009. restored in memory.  Any errors in this process will cause {COMMO} to exit
  2010. to DOS.
  2011.  
  2012. TIPS on using Swap to Disk:
  2013.  
  2014.  *   Use Swap to Disk when running major applications such as external
  2015.      protocol programs, offline mail readers, etc.  Using it with internal
  2016.      DOS functions (DEL, COPY, REN, etc.) or very small programs is
  2017.      inefficient and unnecessary.
  2018.  
  2019.  *   The swap will be faster if you specify the Swap File on a RAMDISK.  A
  2020.      ramdisk program is supplied with DOS (RAMDRIVE.SYS or VDISK.SYS) or
  2021.      you can obtain one from a BBS.
  2022.  
  2023.  *   Be sure to specify a complete path\filename for the Swap File.
  2024.  
  2025.  *   Do not run any TSR (resident) programs when swapping is in effect. 
  2026.      Doing so may result in a swap error.
  2027.  
  2028.  *   The Dialing Directory, resident Macro File and auxiliary Macro File
  2029.      are saved under their original filenames if they have changed.  Thus
  2030.      they may be utilized and/or modified while in the swap/shell.
  2031.  
  2032.  
  2033. ----------  EXECute Preview Mode
  2034.  
  2035. Use the Set Toggles key command, Alt+T, to turn on "EXECute Preview Mode." 
  2036. This mode is used to test your DOS commands and performs the following
  2037. steps for each EXECute function:
  2038.  
  2039. 1)   The command will be displayed after expanding variables and converting
  2040.      control characters.
  2041.  
  2042. 2)   You will be given an opportunity to edit and/or cancel the command
  2043.      before it is executed.
  2044.  
  2045. 3)   Following execution {COMMO} will wait before restoring the Terminal
  2046.      Screen.  This lets you see any error messages that the command may
  2047.      have displayed.
  2048.  
  2049.  
  2050.  
  2051.                                     -40-
  2052.  
  2053. ===  EXIT  ===
  2054.  
  2055. Default key:   Alt+X
  2056. Description:   Exit {COMMO}.
  2057.  
  2058. General form:
  2059.  
  2060.      {EXIT number}
  2061.  
  2062.           number
  2063.                The return code to be passed to DOS.  It may be tested with
  2064.                the IF ERRORLEVEL batch command.  Range is 0 to 255.
  2065.  
  2066. Switches:
  2067.  
  2068.      D1 or D
  2069.           Drop DTR and RTS.  Dropping DTR will cause the modem to
  2070.           disconnect if it has been properly initialized (see Appendix A).
  2071.  
  2072.      D0
  2073.           Do not drop DTR and RTS.
  2074.  
  2075.           If the switch is absent, the current setting of the toggle will
  2076.           be used.  The toggle can be set in the Setup File or by using the
  2077.           Alt+T key command.
  2078.  
  2079. Examples:
  2080.  
  2081.      {exit}
  2082.           No arguments (return code = 0).
  2083.  
  2084.      {exit 3}
  2085.           With return code.
  2086.  
  2087.      {exit-D}
  2088.           Drop DTR and RTS.
  2089.  
  2090.  
  2091. ===  FILE  ===
  2092.  
  2093. Default key:   none
  2094. Description:   Find or display directory information.
  2095.  
  2096. General form:
  2097.  
  2098.      {FILE path\filespec}
  2099.  
  2100.           path\filespec
  2101.                The path and filespec (file mask) to be used for finding or
  2102.                displaying directory entries (filenames and subdirectories). 
  2103.                The filespec may contain wildcards.
  2104.  
  2105.  
  2106.  
  2107.                                     -41-
  2108.  
  2109. Switches:
  2110.  
  2111.      X1 or X
  2112.           Find next matching entry.
  2113.  
  2114.      X0
  2115.           Find first matching entry (default).
  2116.  
  2117.      S1 or S
  2118.           Display a listing of filenames and subdirectories.
  2119.  
  2120. Examples:
  2121.  
  2122.      {file c:\upload\*.*}
  2123.           Find first filename or subdirectory in the directory "c:\upload."
  2124.  
  2125.      {file-x}
  2126.           Find next filename or subdirectory.
  2127.  
  2128.      {file-s c:\upload\*.zip}
  2129.           Display all subdirectories and .ZIP files in the directory
  2130.           "c:\upload".
  2131.  
  2132.  
  2133. ----------  Getting file information: FILE, FILE-X
  2134.  
  2135. The FILE function will find directory information about the files and
  2136. subdirectories specified in "filespec."  The data will be made available in
  2137. the following built-in variables:
  2138.  
  2139.      _ffn
  2140.           Filename or subdirectory name.  Subdirectory names will be
  2141.           preceded with a "\".  The parent directory is "\..".
  2142.  
  2143.      _ffs
  2144.           File size in bytes.
  2145.  
  2146.      _ffd
  2147.           File date.  The format will be as specified in Setup File item
  2148.           "dat".
  2149.  
  2150.      _fft
  2151.           File time.  The format will be as specified in Setup File item
  2152.           "tim".
  2153.  
  2154. The FILE function must be executed without the "X" switch (or with X0) to
  2155. initialize the directory.  This will also make available the first filename
  2156. or subdirectory.  Subsequent executions (with the "X" switch) will make
  2157. subsequent names available.
  2158.  
  2159. Use the IFCOndition function to determine if a filename was made available. 
  2160. The first label ("true") will be taken if a filename was found;  the second
  2161. label ("false") will be taken if no additional filenames are available.
  2162.  
  2163.  
  2164.  
  2165.                                     -42-
  2166.  
  2167.  
  2168. TIPS on using FILE, FILE-X:
  2169.  
  2170.  *   IMPORTANT!  Do not use IFEXist until all files have been found (it
  2171.      uses the same DOS file finding functions).
  2172.  
  2173.  *   The built-in variables will always contain the data for the last
  2174.      filename found.  If no filename has ever been found, the contents are
  2175.      unpredictable.
  2176.  
  2177.  
  2178. ----------  Selecting files: FILE-S
  2179.  
  2180. The "S" switch is used when you want {COMMO} to display the names of the
  2181. files in the specified directory.  Files may then be selected (tagged) for
  2182. uploading or other purposes.  Tagged pathnames are appended to the file
  2183. {SEND}.LST in the {COMMO} home directory (except when Esc is pressed). 
  2184. Facilities are also provided for navigating, changing the filespec and
  2185. editing the {SEND}.LST file.
  2186.  
  2187. The Exit Code is set according to the user's action (keys are shown in
  2188. Online Help) and the built-in variable "_ffn" contains returned information
  2189. (when applicable).  The Exit Code appears in the variable "_err" and may
  2190. also be tested with the IFERrorlevel function.  Exit Codes are as follows:
  2191.  
  2192.      0    The "finish" key has been pressed.
  2193.  
  2194.      1    The Escape key has been pressed.
  2195.  
  2196.      2    The "edit" key has been pressed.
  2197.  
  2198.      3    A new drive has been chosen (drive letter is in "_ffn").
  2199.  
  2200.      4    A new directory has been chosen (subdirectory name is in "_ffn"
  2201.           and is preceded by a "\";  the parent directory is "\..").
  2202.  
  2203.      5    A new file specification has been entered (filespec is in "_ffn",
  2204.           e.g., *.zip).
  2205.  
  2206. TIPS on using FILE-S:
  2207.  
  2208.  *   Use {wind-k} to get a smooth display between invocations of FILE-S.
  2209.  
  2210.  *   When a clean list is desired, {SEND}.LST should be deleted prior to
  2211.      the first use of FILE-S.
  2212.  
  2213.  
  2214. ===  FONFile  ===
  2215.  
  2216. Default key:   none
  2217. Description:   Load a new Dialing Directory file.
  2218.  
  2219.  
  2220.  
  2221.                                     -43-
  2222.  
  2223. Example:
  2224.  
  2225.      {fonf local.fon}
  2226.           The Dialing Directory is replaced with the file LOCAL.FON.
  2227.  
  2228. The current Dialing Directory file will be saved to disk if there are any
  2229. outstanding changes.  Dialing marks in the new file will be erased if
  2230. {cdm=yes} in the Setup File.
  2231.  
  2232.  
  2233. ===  GETString  ===
  2234.  
  2235. Default key:   none
  2236. Description:   Input a string from the modem to a variable.
  2237.  
  2238. General form:
  2239.  
  2240.      {GETString name,count,label}
  2241.  
  2242.           name
  2243.                The name of the variable to which the string will be
  2244.                assigned.
  2245.  
  2246.           count
  2247.                The maximum number of data characters allowed.  A carriage
  2248.                return will always terminate input.  May be 1 to 240.
  2249.                Default is 240.
  2250.  
  2251.           label
  2252.                A macro to GOTO if a carriage return is received and no
  2253.                characters have been entered (the string will be assigned as
  2254.                null).  If this argument is omitted, control will pass to
  2255.                the next function.
  2256.  
  2257. Switches:
  2258.  
  2259.      A1 or A
  2260.           "Append" mode.  Characters will be appended to the variable.  If
  2261.           the current length of the variable is greater than the count in
  2262.           the second argument, a count of 240 will be assumed.
  2263.  
  2264.      A0
  2265.           The variable will be replaced (default).
  2266.  
  2267.      H1 or H
  2268.           "Hotkey" mode.  When the maximum number of characters has been
  2269.           entered, control will pass to the next function.
  2270.  
  2271.      H0
  2272.           Ignore all input after the maximum has been entered, except
  2273.           backspace and carriage return (default).
  2274.  
  2275.  
  2276.  
  2277.                                     -44-
  2278.  
  2279.      I1 or I
  2280.           "Input" mode.  In this mode, characters from the modem will be
  2281.           ignored during the GETString (they will be buffered) and
  2282.           characters typed locally will not be sent to the remote.  This is
  2283.           another way to get local input (see also INPUt and INFOrm).  Echo
  2284.           Status from SETGet is ignored.
  2285.  
  2286.      I0
  2287.           Normal mode (default).
  2288.  
  2289.      P1 or P
  2290.           "Password" mode.  Asterisks will be echoed to the remote and
  2291.           local terminals in place of the received characters (Echo Status
  2292.           will be honored, see SETGet).
  2293.  
  2294.      P0
  2295.           Characters are echoed as received (default).
  2296.  
  2297.      R1 or R
  2298.           "Raw" mode.  A single character will be received and converted to
  2299.           a decimal number string.  All 256 character values are allowed. 
  2300.  
  2301.      R0
  2302.           Normal GETString rules apply (default).
  2303.  
  2304. Examples:
  2305.  
  2306.      {setget 60,timeout,y,^m^j}
  2307.           Set GETString parameters.
  2308.  
  2309.      {gets fonum,12,badinput}
  2310.           Get input to "fonum."
  2311.  
  2312.      {gets-p pword,20}
  2313.           Get a password.
  2314.  
  2315.      {gets-r char}
  2316.           Get an ASCII character value (0-255).
  2317.  
  2318. TIPS on using GETString:
  2319.  
  2320.  *   Use SETGet to set important parameters for GETString.
  2321.  
  2322.  *   A carriage return (ASCII 13) terminates input.  The backspace
  2323.      character (ASCII 8) is used for simple editing.  ASCII 0 and 10 are
  2324.      ignored.  All other characters will be accepted.  Note that tab (ASCII
  2325.      9) can cause problems in host macros.  Use RTRAn to filter tabs if
  2326.      necessary.
  2327.  
  2328.  *   GETString supports "tandem" input.  Characters entered at either end
  2329.      will be input to the string (and displayed at both ends if echo is on;
  2330.      see SETGet).  Turn on Local Echo to see text locally that is sent to
  2331.      the remote with SEND, ASCIiup, etc.
  2332.  
  2333.  
  2334.  
  2335.                                     -45-
  2336.  
  2337.  
  2338.  *   Use the "H" switch and a character count of 1 for "hotkeys."
  2339.  
  2340.  *   Turn off echo (see SETGet) while waiting for the modem to answer (in
  2341.      host mode).  Some modems react poorly to characters being echoed when
  2342.      they are generating a response (such as "RING").
  2343.  
  2344.  *   Incoming characters displayed during a GETString function are not seen
  2345.      by subsequent SSLOok/CALOok/GOLOok/LOOKfor functions.
  2346.  
  2347. See also SETGet, INPUt, INFOrm.
  2348.  
  2349.  
  2350. ===  GOLOok  ===
  2351.  
  2352. Default key:   none
  2353. Description:   GOTO a label when a string appears.
  2354.  
  2355. General form:
  2356.  
  2357.      {GOLOok label,target}
  2358.  
  2359.           label
  2360.                A label to GOTO when the target is received from the serial
  2361.                port.
  2362.  
  2363.           target
  2364.                The ASCII string to look for.  The string begins following
  2365.                the "," and is terminated by the "}".
  2366.  
  2367. GOLOok is used in conjunction with the LOOKfor function.  It sets up an
  2368. additional string to look for.  When the target string appears, control
  2369. will pass to the label.
  2370.  
  2371. See LOOKfor for details, examples and tips on using GOLOok.
  2372.  
  2373. See also SSLOok, CALOok, SETLook.
  2374.  
  2375.  
  2376. ===  GOTO  ===
  2377.  
  2378. Default key:   none
  2379. Description:   Transfer control of macro execution.
  2380.  
  2381. General form:
  2382.  
  2383.      {GOTO label,filename}
  2384.  
  2385.           label
  2386.                The label to which control will be transferred.
  2387.  
  2388.  
  2389.  
  2390.                                     -46-
  2391.  
  2392.           filename
  2393.                The name of the Macro File where the label is to be found.
  2394.                This argument is OPTIONAL and is normally used only if the
  2395.                file is not already loaded.  Do NOT specify a path; the
  2396.                {COMMO} home directory will be used.
  2397.  
  2398. Switches:
  2399.  
  2400.           F1 or F
  2401.                Force loading of the specified file (as the auxiliary file).
  2402.                No filename comparison will be made.
  2403.  
  2404.           F0
  2405.                Compare filenames.  If the file is already loaded (resident
  2406.                or auxiliary), it will not be reloaded (default).
  2407.  
  2408. Examples:
  2409.  
  2410.      {goto mail_run}
  2411.           Control transferred to label "mail_run".
  2412.  
  2413.      {goto mail_run,ginger.mac}
  2414.           Control transferred to label "mail_run" in the auxiliary Macro
  2415.           File "ginger.mac".
  2416.  
  2417.      {goto ,ginger.mac}
  2418.           The auxiliary Macro File "ginger.mac" is loaded; macro execution
  2419.           STOPs (no label given).
  2420.  
  2421. If a filename is specified, {COMMO} will check to see if the file is
  2422. already loaded (resident or auxiliary).  If not, the file will be loaded as
  2423. the auxiliary (the current auxiliary will be saved to disk if there are any
  2424. outstanding changes).
  2425.  
  2426. TIPS on using GOTO:
  2427.  
  2428.  *   It isn't necessary to specify a filename if the target label is in the
  2429.      resident Macro File or in the current auxiliary file.
  2430.  
  2431.  *   A Macro Error will result if either the label or the file do not
  2432.      exist.
  2433.  
  2434.  *   If the label is not found in the auxiliary Macro File, {COMMO} will
  2435.      also search the resident Macro File.
  2436.  
  2437. See also CALL, UNLOad, Appendix K.
  2438.  
  2439.  
  2440. ===  HANGup  ===
  2441.  
  2442. Default key:   Alt+H
  2443. Description:   Disconnect by dropping DTR.
  2444.  
  2445.  
  2446.  
  2447.                                     -47-
  2448.  
  2449. Examples:
  2450.  
  2451.      {hangup}
  2452.           Prompt user for disconnect.
  2453.  
  2454.      {hangup y}
  2455.           Disconnect without prompting.
  2456.  
  2457.  
  2458. ===  HELP  ===
  2459.  
  2460. Default key:   F1
  2461. Description:   Open Online Help window.
  2462.  
  2463. Examples:
  2464.  
  2465.      {help}
  2466.           Display key command help
  2467.  
  2468.      {help x}
  2469.           Display topic "TX"
  2470.  
  2471. Any single character may be specified.  {COMMO} will prefix it with a "T"
  2472. and search for the topic code.  You may create your own Online Help file. 
  2473. See "Modifying the Help File" in Part I (COMMO.DOC).
  2474.  
  2475.  
  2476. ===  HOLD  ===
  2477.  
  2478. Default key:   none
  2479. Description:   Hold until specified time of day (24 hour format).
  2480.  
  2481. Examples:
  2482.  
  2483.      {hold 3:30}
  2484.           Hold until 3:30 am.
  2485.  
  2486.      {hold 16:10}
  2487.           Hold until 4:10 pm.
  2488.  
  2489.      {hold 0:00}
  2490.           Hold until midnight.
  2491.  
  2492. NOTE:  Incoming characters displayed during a HOLD function are not seen by
  2493. subsequent SSLOok/CALOok/GOLOok/LOOKfor functions.
  2494.  
  2495.  
  2496. ===  IFCArrier  ===
  2497.  
  2498. Default key:   none
  2499. Description:   Test for presence of Carrier Detect signal.
  2500.  
  2501.  
  2502.  
  2503.                                     -48-
  2504.  
  2505. General form:
  2506.  
  2507.      {IFCArrier true,false}
  2508.  
  2509.           true
  2510.                A label to GOTO or CALL if carrier is detected.
  2511.  
  2512.           false
  2513.                A label to GOTO or CALL if carrier is not detected.
  2514.  
  2515. NOTE:  If a target label is omitted (null), control will pass to the next
  2516. function.
  2517.  
  2518. Switches:
  2519.  
  2520.      C1 or C
  2521.           A CALL is performed on the label.  When the CALLed routine
  2522.           RETUrns, execution will continue following the IFCArrier.
  2523.  
  2524.      C0
  2525.           A GOTO is performed (default).
  2526.  
  2527. Examples:
  2528.  
  2529.      {ifcarrier c10,c20}
  2530.           Using GOTO
  2531.  
  2532.      {ifcarrier-c c10,c20}
  2533.           Using CALL
  2534.  
  2535. TIP on using IFCArrier:
  2536.  
  2537.  *   When using a loop to wait for a change in Carrier Detect, you should
  2538.      include a short pause in the loop if you want characters to display. 
  2539.      The following sequence will display incoming characters while waiting
  2540.      for Carrier Detect to drop:
  2541.  
  2542.           ... {:cd1} {pause 1} {ifcarrier cd1} ...
  2543.  
  2544. See also NOCArrier.
  2545.  
  2546.  
  2547. ===  IFCOndition  ===
  2548.  
  2549. Default key:   none
  2550. Description:   Test for conditions set by other functions.
  2551.  
  2552. General form:
  2553.  
  2554.      {IFCOndition true,false}
  2555.  
  2556.  
  2557.  
  2558.                                     -49-
  2559.  
  2560.           true
  2561.                A label to GOTO or CALL if the Condition Flag is true.
  2562.  
  2563.           false
  2564.                A label to GOTO or CALL if the Condition Flag is false.
  2565.  
  2566. NOTE:  If a target label is omitted (null), control will pass to the next
  2567. function.
  2568.  
  2569. Numeric switches:
  2570.  
  2571.      no switches present
  2572.           Test the current state of the Condition Flag.
  2573.  
  2574.      E1 or E
  2575.           Test for numeric equality.  A numeric string contains only the
  2576.           digits 0-9 and is in the range 0 to 65535.
  2577.  
  2578.      L1 or L
  2579.           Numeric test -- if first COMPare argument is less than the
  2580.           second.
  2581.  
  2582.      G1 or G
  2583.           Numeric test -- if first COMPare argument is greater than the
  2584.           second.
  2585.  
  2586. Other switches:
  2587.  
  2588.      C1 or C
  2589.           A CALL is performed on the label.  When the CALLed routine
  2590.           RETUrns, execution will continue following the IFCOndition.
  2591.  
  2592.      C0
  2593.           A GOTO is performed (default).
  2594.  
  2595. Examples:
  2596.  
  2597.      {compare var1,message}
  2598.      {ifcondit match,nomatch}
  2599.           Compare and set Condition Flag.  GOTO "match" if the variable
  2600.           "var1" is set to "message," to "nomatch" if it is not.
  2601.  
  2602.      {compare value,200}
  2603.      {ifcon-GEC toobig,aok}
  2604.           Compare and set conditions.  CALL "toobig" if "value" is greater
  2605.           than or equal to 200, else CALL "aok."
  2606.  
  2607.      {instring zipcode,90}
  2608.      {ifcon yes,no}
  2609.           Test if "zipcode" contains the digits "90".  If "true" GOTO
  2610.           "yes", if "false" GOTO "no".
  2611.  
  2612.  
  2613.  
  2614.                                     -50-
  2615.  
  2616. Switches may be used in any combination.  If any numeric switches are
  2617. present, the Condition Flag is not tested.
  2618.  
  2619. The difference between testing for string equality and numeric equality is
  2620. shown in this example:
  2621.  
  2622.      The strings "05" and "5" are different text strings, but are
  2623.      numerically equal.
  2624.  
  2625.  
  2626. ===  IFERrorlevel  ===
  2627.  
  2628. Default key:   none
  2629. Description:   Test the Exit Code set by certain functions.
  2630.  
  2631. General form:
  2632.  
  2633.      {IFERrorlevel number,true,false}
  2634.  
  2635.           number
  2636.                A number from 0 to 255.  It will be compared to the last
  2637.                Exit Code that was set.
  2638.  
  2639.           true
  2640.                A label to GOTO or CALL if the Exit Code is greater than or
  2641.                equal to "number."
  2642.  
  2643.           false
  2644.                A label to GOTO or CALL if the Exit Code is less than
  2645.                "number."
  2646.  
  2647. NOTE:  If a target label is omitted (null), control will pass to the next
  2648. function.
  2649.  
  2650. Switches:
  2651.  
  2652.      C1 or C
  2653.           A CALL is performed on the label.  When the CALLed routine
  2654.           RETUrns, execution will continue following the IFERrorlevel.
  2655.  
  2656.      C0
  2657.           A GOTO is performed (default).
  2658.  
  2659. Examples:
  2660.  
  2661.      {iferror 1,abc,def}
  2662.           GOTO "abc" if Exit Code is greater than or equal to 1.  Else GOTO
  2663.           def.
  2664.  
  2665.      {ifer-c 2,gtr2}
  2666.           CALL "gtr2" if Exit Code is greater than or equal to 2  Else
  2667.           continue.
  2668.  
  2669.  
  2670.  
  2671.                                     -51-
  2672.  
  2673. TIPS on using IFERrorlevel:
  2674.  
  2675.  *   The Exit Code is set by certain functions (e.g., EXECute-D, SHELl,
  2676.      RXMOdem, SXMOdem) and should normally be tested immediately following
  2677.      execution of those functions.
  2678.  
  2679.  *   EXECute without the "D" switch or Shell to DOS will normally set the
  2680.      Exit Code to 0.
  2681.  
  2682.  *   Many programs return an Exit Code greater than 0 when the result is
  2683.      unsuccessful.  HS/Link, for example, will return an Exit Code of 1 or
  2684.      higher if the file transfer has failed.
  2685.  
  2686.  *   The value of the Exit Code is also stored in the string variable
  2687.      "_err" and may be tested with COMPare.
  2688.  
  2689.  
  2690. ===  IFEXist  ===
  2691.  
  2692. Default key:   none
  2693. Description:   Test for existence of a disk file or files.
  2694.  
  2695. General form:
  2696.  
  2697.      {IFEXist path\filename,true,false}
  2698.  
  2699.           path\filename
  2700.                A DOS path\filename.  If the path is omitted, the current
  2701.                directory will be used.  If wildcards are used the "true"
  2702.                condition will hold if any files match the specification.
  2703.  
  2704.           true
  2705.                A label to GOTO or CALL if the file exists.
  2706.  
  2707.           false
  2708.                A label to GOTO or CALL if no files match.
  2709.  
  2710. NOTE:  If a target label is omitted (null), control will pass to the next
  2711. function.
  2712.  
  2713. Switches:
  2714.  
  2715.      C1 or C
  2716.           A CALL is performed on the label.  When the CALLed routine
  2717.           RETUrns, execution will continue following the IFEXist.
  2718.  
  2719.      C0
  2720.           A GOTO is performed (default).
  2721.  
  2722. Examples:
  2723.  
  2724.      {ifex-c a:file.xyz,,m20}
  2725.           CALL "m20" if not found.
  2726.  
  2727.  
  2728.  
  2729.                                     -52-
  2730.  
  2731.  
  2732.      {ifex c:\data\words.txt,345}
  2733.           GOTO "345" if found.
  2734.  
  2735.      {ifex c:\ul\*.rep,a01,a02}
  2736.           Using a wildcard.
  2737.  
  2738.  
  2739. ===  INCRement  ===
  2740.  
  2741. Default key:   none
  2742. Description:   Add a number to a numeric variable.
  2743.  
  2744. Examples:
  2745.  
  2746.      {incr count}
  2747.           Add 1 to the variable "count".
  2748.  
  2749.      {incr oranges,1234}
  2750.           Add 1234 to "oranges".
  2751.  
  2752. The default for the second argument is 1.
  2753.  
  2754. If either argument or the result is out of range, then the variable will be
  2755. set to the string "ERROR".
  2756.  
  2757. If the variable is not numeric, the results will be unpredictable.
  2758.  
  2759. See also DECRement.
  2760.  
  2761.  
  2762. ===  INFOrm  ===
  2763.  
  2764. Default key:   none
  2765. Description:   Display an advisory message.
  2766.  
  2767. General form:
  2768.  
  2769.      {INFOrm string}
  2770.  
  2771.           string
  2772.                Message to be displayed.
  2773.  
  2774. Switches:
  2775.  
  2776.      Q1 or Q
  2777.           Query the user for a "Yes/No" response.  "Yes" will be the
  2778.           default if Enter is pressed.
  2779.  
  2780.           The Condition Flag will be set to "true" if the response is
  2781.           "yes".  It will be set to "false" if the response is "no".  Test
  2782.           with IFCOndition.
  2783.  
  2784.  
  2785.  
  2786.                                     -53-
  2787.  
  2788.      Q0
  2789.           Query the user for a "Yes/No" response.  "No" will be the default
  2790.           if Enter is pressed.  The Condition Flag is set as above.
  2791.  
  2792.      Dn
  2793.           Display the message for "n" seconds, then continue.  "n" may
  2794.           range from 1 to 999.  This switch is ignored if the "Q" switch is
  2795.           present.
  2796.  
  2797.      S2
  2798.           Make the "fail" sound as the message is displayed.  The sound is
  2799.           controlled with the "ers" item in the Setup File.
  2800.  
  2801.      S1 or S
  2802.           Make a warning sound (default).
  2803.  
  2804.      S0
  2805.           No sound will be made.
  2806.  
  2807. Examples:
  2808.  
  2809.      {inform Press a key to continue}
  2810.           Wait for Esc.
  2811.  
  2812.      {info-qs0 Overwrite the file?}
  2813.           Yes/No response, no error sound.
  2814.  
  2815.      {info-d3 Login now in progress}
  2816.           Display message for 3 seconds, then continue.
  2817.  
  2818. INFOrm will display a string in a pop-up box over the Terminal Screen. 
  2819. {COMMO} will normally wait for "Esc" to be pressed (switches can alter this
  2820. behavior).  The string length is limited by the width of the screen.
  2821.  
  2822. NOTE:  When the "Q" switch is used, Esc and Ctrl+Break will be ignored.
  2823.  
  2824. See also INPUt, GETString.
  2825.  
  2826.  
  2827. ===  INITmodem  ===
  2828.  
  2829. Default key:   Alt+O
  2830. Description:   Send Modem Initialization String.
  2831.  
  2832. Example:
  2833.  
  2834.      {init}
  2835.           No arguments
  2836.  
  2837.  
  2838.  
  2839.                                     -54-
  2840.  
  2841. ===  INPUt  ===
  2842.  
  2843. Default key:   none
  2844. Description:   Input a string from the keyboard.
  2845.  
  2846. General form:
  2847.  
  2848.      {INPUt name,prompt}
  2849.  
  2850.           name
  2851.                The name of a string variable.  The current value of this
  2852.                variable will appear in the input line.
  2853.  
  2854.           prompt
  2855.                A prompt string that will appear in the input window border.
  2856.  
  2857. Switches:
  2858.  
  2859.      Ln
  2860.           Length of the input field, "n" may range from 1 to 120 (default
  2861.           is 60).
  2862.  
  2863. Example:
  2864.  
  2865.      {input upfile,Enter a filename:}
  2866.           Input a string to the variable "upfile."
  2867.  
  2868. If 0 data characters are entered, the variable will be set to null.
  2869.  
  2870. NOTE:  If Esc is pressed, macro execution will be terminated unless an exit
  2871. label has been defined with SETEsc.
  2872.  
  2873. See also GETString, INFOrm.
  2874.  
  2875.  
  2876. ===  INSTring  ===
  2877.  
  2878. Default key:   none
  2879. Description:   Find a string within a string, return its position.
  2880.  
  2881. General form:
  2882.  
  2883.      {INSTring name,string}
  2884.  
  2885.           name
  2886.                The name of a variable (string to search in).
  2887.  
  2888.           string
  2889.                The string to search for.
  2890.  
  2891.  
  2892.  
  2893.                                     -55-
  2894.  
  2895. Example:
  2896.  
  2897.      {inst line,abc}
  2898.           The variable "line" is searched for the string "abc".
  2899.  
  2900. INSTring will set the following:
  2901.  
  2902.      1)   The Condition Flag will be set to "true" if the string is found,
  2903.           to "false" if the string is not found.  Test with IFCOndition, no
  2904.           switches.
  2905.  
  2906.      2)   The starting position of the string will be returned in the
  2907.           built-in variable "_pos" (first character is "1").  "_pos" will
  2908.           be set to zero if the string is not found.
  2909.  
  2910.  
  2911. ===  KEYStuff  ===
  2912.  
  2913. Default key:   none
  2914. Description:   Put key codes into the keyboard buffer.
  2915.  
  2916. Examples:
  2917.  
  2918.      {keys 1c0d}
  2919.           Put a carriage return into the keyboard buffer.
  2920.  
  2921.      {keys 1e41,6c00}
  2922.           Put an "A" in the keyboard buffer followed by Alt+F5.
  2923.  
  2924. This function is usually used prior to EXECuting programs, batch files or
  2925. DOS commands that require keys to be pressed.  It allows complete
  2926. automation without operator intervention.
  2927.  
  2928. TIPS on using KEYStuff:
  2929.  
  2930.  *   The key codes are given in hexadecimal (scan code/character code as
  2931.      received from the BIOS).  Press Alt+K in the Internal Editor to view
  2932.      any key code.
  2933.  
  2934.  *   One or more codes may be listed.  Do not insert extra spaces.
  2935.  
  2936.  *   Usually, when specifying an ASCII character, only the character code
  2937.      need be listed.  Thus the second example above could be written:  
  2938.  
  2939.           {keys 41,6c00}
  2940.  
  2941.  
  2942. ===  LENGth  ===
  2943.  
  2944. Default key:   none
  2945. Description:   Determine the length of a string.
  2946.  
  2947.  
  2948.  
  2949.                                     -56-
  2950.  
  2951. Examples:
  2952.  
  2953.      {leng %line}
  2954.           Find the length of the string in the variable "line".
  2955.  
  2956.      {leng %line1%%line2}
  2957.           Find the combined length of "line1" and "line2".
  2958.  
  2959. The length will be returned in the built-in variable "_len".  If the string
  2960. is null, the length will be set to zero.
  2961.  
  2962.  
  2963. ===  LIGHts  ===
  2964.  
  2965. Default key:   none
  2966. Description:   Set Signal Lights toggle.
  2967.  
  2968. Examples:
  2969.  
  2970.      {lights}
  2971.           Toggle Signal Lights on/off.
  2972.  
  2973.      {lights y}
  2974.           Turn on Signal Lights.
  2975.  
  2976.      {lights n}
  2977.           Turn off Signal Lights.
  2978.  
  2979.  
  2980. ===  LOCAlecho  ===
  2981.  
  2982. Default key:   none
  2983. Description:   Set Local Echo toggle.
  2984.  
  2985. Examples:
  2986.  
  2987.      {local}
  2988.           Toggle Local Echo on/off.
  2989.  
  2990.      {local y}
  2991.           Turn on Local Echo.
  2992.  
  2993.      {local n}
  2994.           Turn off Local Echo.
  2995.  
  2996.  
  2997. ===  LOOKfor  ===
  2998.  
  2999. Default key:   none
  3000. Description:   Look for strings in the modem input stream.
  3001.  
  3002. LOOKfor is used in conjunction with SSLOok, CALOok and GOLOok to scan for
  3003. as many as 16 strings at the same time.  When SSLOok, CALOok and GOLOok set
  3004.  
  3005.  
  3006.  
  3007.                                     -57-
  3008.  
  3009. up additional strings to look for, the actual "looking" does not take place
  3010. until the LOOKfor executes.
  3011.  
  3012. Parameters controlling LOOKfor are set with the SETLook function and may be
  3013. changed at any time with another SETLook.  See the description of the
  3014. SETLook function for details.
  3015.  
  3016. Examples using LOOKfor only:
  3017.  
  3018.      {lookfor first name?}
  3019.           Look for the string "first name?"
  3020.  
  3021.      {look ^(COMMO^)}
  3022.           Look for the string "{COMMO}".
  3023.  
  3024.      When the string comes in, control will pass to the next function.
  3025.  
  3026. Example construct using SSLOok/CALOok/GOLOok/LOOKfor:
  3027.  
  3028.                {setlook 60,hng,3,n|}
  3029.                {setv ss_r,|}
  3030.                  ...
  3031.      {:start}
  3032.                {golook label-a,target1}
  3033.                {calook start,label-b,target2}
  3034.                {sslook ss_r,target3}
  3035.                {golook ,target4}
  3036.                {lookfor target5} {send answer5}
  3037.                {goto label-c}
  3038.  
  3039.      {:label-a}     {hangup y} {goto cancel}
  3040.      {:label-b}     {send answer2} {call subr} {return}
  3041.      {:label-c}          ...
  3042.  
  3043.      In this example {COMMO} will look for five target strings.
  3044.  
  3045.      When a target specified in any of the CALOok, GOLOok or LOOKfor
  3046.      functions is received, the LOOKfor is cancelled.  It may be set up
  3047.      again by going to "start".
  3048.  
  3049.      When the target specified in the SSLOok is received, the string in the
  3050.      variable will be transmitted to the serial port.  The LOOKfor will
  3051.      continue to look for the same targets.
  3052.  
  3053.      The GOLOok function for target1 will GOTO "label-a" when the string
  3054.      comes in.  In the example control will pass to "cancel" (macro not
  3055.      shown).
  3056.  
  3057.      If target2 comes in, the CALOok function will set "start" as the
  3058.      return point and then CALL "label-b".  When this routine RETUrns,
  3059.      control returns to "start" and the five string LOOKfor will be set up
  3060.      again.
  3061.  
  3062.  
  3063.  
  3064.                                     -58-
  3065.  
  3066.      If target3 is received, the string in the variable "ss_r" will be sent
  3067.      (in this case, a carriage return) and looking will continue.
  3068.  
  3069.      The GOLOok for target4 has a null label and control will pass to the
  3070.      function following the LOOKfor if that string comes in.  The "," must
  3071.      be present.
  3072.  
  3073.      If target5 comes in, control will pass to the function following the
  3074.      LOOKfor.
  3075.  
  3076. TIPS on creating LOOKfor strings:
  3077.  
  3078.  *   There should be just one space following the LOOKfor function name. 
  3079.      Any spaces beyond this point are part of the string.  The string ends
  3080.      at the right curly brace.
  3081.  
  3082.  *   SSLOok/CALOok/GOLOok/Auto Receive strings begin immediately after the
  3083.      comma delimiter.  There should be no spaces unless they are part of
  3084.      the string.
  3085.  
  3086.  *   Strings may be up to 32 characters in length (control characters like
  3087.      "^M" count as one).  Upper/lower case is ignored.
  3088.  
  3089.  *   ANSI control sequences are filtered if ANSI or VT102 emulation is
  3090.      enabled.
  3091.  
  3092.  *   Short strings may not be unique enough, long strings may not match if
  3093.      there is line noise.
  3094.  
  3095.  *   Rules for representing special characters in
  3096.      SSLOok/CALOok/GOLOok/LOOKfor/Auto Receive strings are given in
  3097.      Appendix D.
  3098.  
  3099.  *   SSLOok, CALOok and GOLOok functions should immediately precede a
  3100.      LOOKfor (no string compares actually occur until the LOOKfor
  3101.      executes).  Up to 15 SSLOok/CALOok/GOLOok strings may be used in
  3102.      addition to the LOOKfor (up to 16 strings total).
  3103.  
  3104.  *   Use FILTER Capture Mode to determine the prompt to look for.
  3105.  
  3106.  *   If two or more strings cause a match at the same time, the LAST such
  3107.      string listed is the one acted upon (for example, if "abcdef" and
  3108.      "def" are listed and the string "abcdef" comes in).
  3109.  
  3110.  *   When an SSLOok causes a string to be sent, the LOOKfor timeout timer
  3111.      is restarted.
  3112.  
  3113.  
  3114.  
  3115.                                     -59-
  3116.  
  3117. See also SSLOok, CALOok, GOLOok, SETLook.
  3118.  
  3119.  
  3120. ===  MACRo  ===
  3121.  
  3122. Default key:   Alt+M
  3123. Description:   Open Macro File window.
  3124.  
  3125. Examples:
  3126.  
  3127.      {macro}
  3128.           Open window at current position.
  3129.  
  3130.      {macro menu1}
  3131.           Open window at "menu1".
  3132.  
  3133. A string argument may be included to facilitate the creation of menus
  3134. within the Macro File.  The first occurrence of the argument string will
  3135. become the top line of the display when the window is opened.
  3136.  
  3137. The Selector Bar will be positioned on the first screen line that has a
  3138. left curly brace, if any.
  3139.  
  3140. Here is an example of how to structure a menu using MACRo:
  3141.  
  3142.                                    | (this is past col. 80)
  3143.                                    | menu111
  3144.           Name of Menu             |
  3145.                                    |
  3146.                                    |
  3147.           Selection 1              | {goto sel1}
  3148.           Selection 2              | {goto sel2}
  3149.           Selection 3              | {goto sel3}
  3150.  
  3151.      {:af1} {macro menu111}
  3152.      {:sel1} ...
  3153.      {:sel2} ...
  3154.      {:sel3} ...
  3155.  
  3156. The upper line with "menu111" will be the top line of the screen.  Pressing
  3157. Alt+F1 will bring up the menu with the Selector Bar on Selection 1.  Macros
  3158. at "sel1", "sel2" and "sel3" will process the respective selections.
  3159.  
  3160. Note that the macro at "af1" to invoke the menu must be below the line with
  3161. "menu111" since it contains the string and would be found in the search. 
  3162. Also the macro at "af1" must be in the same Macro File (resident or
  3163. auxiliary) as the menu itself.
  3164.  
  3165. TIPS on using MACRo:
  3166.  
  3167.  *   The MACRo function always terminates the macro that is currently
  3168.      executing.
  3169.  
  3170.  
  3171.  
  3172.                                     -60-
  3173.  
  3174.  *   Menu creation using MACRo cannot be used when the Macro File is
  3175.      compiled.  Use MENU instead.
  3176.  
  3177. See also MENU.
  3178.  
  3179.  
  3180. ===  MARK  ===
  3181.  
  3182. Default key:   none
  3183. Description:   Mark Dialing Directory entries for dialing.
  3184.  
  3185. Example:
  3186.  
  3187.      {mark joes-bbs,file-city}
  3188.           Mark entries for dialing.
  3189.  
  3190. Dialing Strings may be separated by spaces or commas.
  3191.  
  3192. {COMMO} will search the Dialing Directory for each string and mark the
  3193. first entry where a match is found.  Case is ignored.
  3194.  
  3195. The strings may consist of any part of a Dialing Directory entry line
  3196. (including strings contained within curly braces), but must NOT contain any
  3197. spaces, commas or curly braces.
  3198.  
  3199. See also DIAL, UNMArk.
  3200.  
  3201.  
  3202. ===  MENU  ===
  3203.  
  3204. Default key:   none
  3205. Description:   Create a pop-up macro menu.
  3206.  
  3207. General form:
  3208.  
  3209.      {SETV _menu1,text1}
  3210.      {SETV _menu2,text2}
  3211.           ...
  3212.      {SETV _menuN,textN}
  3213.  
  3214.           text1
  3215.                Text to be placed on first information line in the pop-up
  3216.                window (third line down, counting from the top border).
  3217.  
  3218.                NOTE:  These text strings are simply information and have no
  3219.                effect on which macros will be executed.
  3220.  
  3221.           text2
  3222.                Text to be placed on second information line.
  3223.           ...
  3224.  
  3225.           textN
  3226.                Text to be placed on Nth information line.
  3227.  
  3228.  
  3229.  
  3230.                                     -61-
  3231.  
  3232.  
  3233.      {SETV _mlabel,label1,label2,...}
  3234.  
  3235.           NOTE:  Labels are positional and may be omitted using null
  3236.           arguments for keys that aren't used.  See example 2 below.
  3237.  
  3238.           label1
  3239.                Label to GOTO if F1, A or 1 is pressed.  Any of the three
  3240.                keys will activate the macro at the first label.
  3241.  
  3242.           label2
  3243.                Label to GOTO if F2, B or 2 is pressed.
  3244.  
  3245.           ... etc.
  3246.  
  3247.      {SETV _menter,label}
  3248.  
  3249.           label
  3250.                Label to GOTO if Enter is pressed.
  3251.  
  3252.      {SETV _mhelp,label}
  3253.  
  3254.           label
  3255.                Label to GOTO if F1 is pressed.  This allows F1 to be used
  3256.                separately for help when the A or 1 keys need to be used for
  3257.                a menu selection.
  3258.  
  3259.      {SETV _mcolor,text,border}
  3260.  
  3261.           text
  3262.                Colors for the text area of the pop-up window.
  3263.  
  3264.           border
  3265.                Colors for the window border.
  3266.  
  3267.           NOTE:  The attributes are specified in the same manner as the
  3268.           colors in the Setup File (press F7 in the Internal Editor to
  3269.           display the Color Chart).  
  3270.  
  3271.      {MENU height,width,string}
  3272.  
  3273.           height
  3274.                Total number of rows from top to bottom of pop-up window,
  3275.                including borders.  Minimum is 5.
  3276.  
  3277.           width
  3278.                Total number of columns from left side to right side,
  3279.                including borders.  Minimum is 23.
  3280.  
  3281.           string
  3282.                Title string that will appear in the top border.
  3283.  
  3284.  
  3285.  
  3286.                                     -62-
  3287.  
  3288. Example 1:
  3289.  
  3290.           {setv _menu1, F1  Call computer at work}
  3291.           {setv _menu3, F2  Call E-mail service}
  3292.           {setv _menu5, F3  Run offline mail reader}
  3293.           {setv _mlabel,work,mail,reader}
  3294.           {setv _mcolor,17,30}
  3295.           {menu 9,32,Daily Activity Menu} {}
  3296.  
  3297.      {:work}    ... macro to call work computer.
  3298.      {:mail}    ... macro to call E-mail service.
  3299.      {:reader}  ... macro to run offline reader.
  3300.  
  3301.      This menu specifies that function keys be pressed to activate the
  3302.      macros.  You could also press A or 1 instead of F1, B or 2 instead of
  3303.      F2, etc.  The macros may be as simple or as complex as desired to
  3304.      complete the task.
  3305.  
  3306. Example 2:
  3307.  
  3308.           {setv _menu1, D      Dialing Directory}
  3309.           {setv _menu4, E      Edit a file}
  3310.           {setv _menu2, M      Macro File}
  3311.           {setv _menu3, Enter  Shell to DOS (with swap)}
  3312.           {setv _mlabel,,,,ddir,edit,,,,,,,,mfile}
  3313.           {setv _menter,dos}
  3314.           {setv _mcolor,03,47}
  3315.           {menu 8,37,Common Commands} {}
  3316.  
  3317.      {:ddir}  {dial} {}
  3318.      {:edit}  {input efile,Filename to Edit}
  3319.               {edit %efile} {}
  3320.      {:mfile} {macro}
  3321.      {:dos}   {shell-s} {}
  3322.  
  3323.      This menu uses "mnemonic" key labeling -- D for (D)ialing Directory,
  3324.      etc.  Notice that there are three empty positions in the "_mlabel"
  3325.      list prior to "ddir" and "edit".  These correspond to A, B and C,
  3326.      which are not used in this menu.  Then there are empty positions up to
  3327.      "mfile" (M).
  3328.  
  3329. TIPS on using MENU:
  3330.  
  3331.  *   The dimensions of the window are limited by the current size of the
  3332.      Terminal Screen.
  3333.  
  3334.  *   The total number of displayable lines is "height" less 4.  Lines in
  3335.      the window for which no "_menux" variable has been defined will be
  3336.      left blank.
  3337.  
  3338.  *   Up to 26 labels can be specified in each menu.  These correspond to
  3339.      pressing the letters A through Z.  The first 12 labels also correspond
  3340.  
  3341.  
  3342.  
  3343.                                     -63-
  3344.  
  3345.      to pressing F1 through F12, while the first 9 labels correspond to
  3346.      pressing 1 through 9.
  3347.  
  3348.  *   The built-in variable "_msn" is set to the number of the menu
  3349.      selection when a menu key is pressed: 0 for Enter, 1 to 26 for A to Z,
  3350.      etc.
  3351.  
  3352.  *   All variables used to create the menu are automatically deleted from
  3353.      Variable Space after the menu is displayed. 
  3354.  
  3355.  *   The last colors used to display a menu will persist until they are
  3356.      changed (by setting the "_mcolor" variable).
  3357.  
  3358.  *   If Esc is pressed to exit the menu, macro execution continues in
  3359.      sequence following the MENU function.
  3360.  
  3361. See also MACRo.
  3362.  
  3363.  
  3364. ===  MULTiply  ===
  3365.  
  3366. Default key:   none
  3367. Description:   Multiply a numeric variable by a number.
  3368.  
  3369. Example:
  3370.  
  3371.      {mult money,10}
  3372.           Multiply "money" by 10.
  3373.  
  3374. The multiplier (second argument) is limited to 65535 (default is 1).
  3375.  
  3376. If either argument or the result is out of range, then the variable will be
  3377. set to the string "ERROR".
  3378.  
  3379. If the variable is not numeric, the results will be unpredictable.
  3380.  
  3381.  
  3382. ===  NOCArrier  ===
  3383.  
  3384. Default key:   none
  3385. Description:   Sets/resets a macro to execute when Carrier Detect is lost.
  3386.  
  3387. Switches:
  3388.  
  3389.      E or E1
  3390.           Enable the "carrier lost" logic as if a connection had been made
  3391.           using the Auto Dialer.  If no label is specified when using the
  3392.           "E" switch, the current label will be retained.
  3393.  
  3394.      E0
  3395.           Do not enable the "carrier lost" logic (default).
  3396.  
  3397.  
  3398.  
  3399.                                     -64-
  3400.  
  3401. Examples:
  3402.  
  3403.      {noca carrlost}
  3404.           GOTO the label "carrlost" when the Carrier Detect signal drops.
  3405.  
  3406.      {noca}
  3407.           Cancel the carrier lost label.
  3408.  
  3409. This function is used to modify the label defined by the "ncr" item in the
  3410. Setup File.  See "Alt+G  Edit Setup File" in Part I (COMMO.DOC) for details
  3411. and restrictions on this feature.
  3412.  
  3413.  
  3414. ===  NOOP  ===
  3415.  
  3416. Default key:   none
  3417. Description:   No-op function, does nothing
  3418.  
  3419. Example:
  3420.  
  3421.      {noop}
  3422.           No arguments.
  3423.  
  3424.  
  3425. ===  OFFLog  ===
  3426.  
  3427. Default key:   none
  3428. Description:   Make an {Off} entry in the Usage Log.
  3429.  
  3430. Example:
  3431.  
  3432.      {offlog}
  3433.           No arguments.
  3434.  
  3435. This function is useful on systems that do not support the Carrier Detect
  3436. signal.
  3437.  
  3438. NOTE:  An {Off} entry will be made only if an {On} entry was made at
  3439. connection time.
  3440.  
  3441.  
  3442. ===  PARMs  ===
  3443.  
  3444. Default key:   Alt+P
  3445. Description:   Set current Terminal Parameters
  3446.  
  3447. General form 1:
  3448.  
  3449.      {PARMs speed,format,comport,terminal-type,delay}
  3450.  
  3451.  
  3452.  
  3453.                                     -65-
  3454.  
  3455.           speed
  3456.                The bps rate: 2400, 38400, etc.
  3457.  
  3458.           format
  3459.                The data format: 8n1, 7e1, etc.
  3460.  
  3461.           comport
  3462.                The serial port number: 1-16.
  3463.  
  3464.           terminal
  3465.                The terminal-type: A, V or T.
  3466.  
  3467.           delay
  3468.                The inter-character delay factor: 0-999.
  3469.  
  3470. General form 2:
  3471.  
  3472.      {PARMs-C comport,address,irq,freq}
  3473.  
  3474.           comport
  3475.                The serial port number: 1-16.
  3476.  
  3477.           address
  3478.                The hexadecimal hardware base address.
  3479.  
  3480.           irq
  3481.                The IRQ number for this port.
  3482.  
  3483.           freq
  3484.                The maximum speed of the port.
  3485.  
  3486. Switches:
  3487.  
  3488.      C1 or C
  3489.           Enter the specified port address, IRQ and frequency into
  3490.           {COMMO}'s internal port tables (override "com" item in
  3491.           COMMO.SET).  Then make "comport" the active port.
  3492.  
  3493.      C0
  3494.           Use general form 1 (default).
  3495.  
  3496. Examples:
  3497.  
  3498.      {parms}
  3499.           Open Terminal Parameters window.
  3500.  
  3501.      {parms 38400,8,1,,20}
  3502.           Set 38400 bps, 8n1, Com1, delay=20.
  3503.  
  3504.  
  3505.  
  3506.                                     -66-
  3507.  
  3508.      {parms ,,4,V}
  3509.           Set Com4 VT102.
  3510.  
  3511.      {parms 19200,7o1}
  3512.           Set 19200 bps, 7o1.
  3513.  
  3514.      {parm-c 3,3e8,5}
  3515.           Switch to COM3 using address 3e8 and IRQ 5.
  3516.  
  3517. IMPORTANT!  Omitted parameters are not changed.
  3518.  
  3519. This function will change the current parameters, but has no effect on the
  3520. default parameters that are set when dialing.
  3521.  
  3522. The speed field is also used to indicate INT 14 driver mode.  See Appendix
  3523. L for details.
  3524.  
  3525. See also DPARms.
  3526.  
  3527.  
  3528. ===  PASSword  ===
  3529.  
  3530. Default key:   Alt+W
  3531. Description:   Send current password.
  3532.  
  3533. Example:
  3534.  
  3535.      {password}
  3536.           No arguments.
  3537.  
  3538. The current password is obtained from the Dialing Directory entry whenever
  3539. a number is dialed.  If no password is specified no characters will be
  3540. sent.
  3541.  
  3542.  
  3543. ===  PAUSe  ===
  3544.  
  3545. Default key:   none
  3546. Description:   Pause for a time interval.
  3547.  
  3548. Switches:
  3549.  
  3550.      T or T1
  3551.           Time is specified in DOS clock ticks (there are 18 clock ticks
  3552.           per second).
  3553.  
  3554.      T0
  3555.           Time is specified in seconds (default).
  3556.  
  3557.  
  3558.  
  3559.                                     -67-
  3560.  
  3561. Examples:
  3562.  
  3563.      {pause 25}
  3564.           Pause for 25 seconds.
  3565.  
  3566.      {pause-t 9}
  3567.           Pause for 9 clock ticks (one half second).
  3568.  
  3569. NOTE:  Incoming characters displayed during a PAUSe function are not seen
  3570. by subsequent SSLOok/CALOok/GOLOok/LOOKfor functions.
  3571.  
  3572.  
  3573. ===  POPStack  ===
  3574.  
  3575. Default key:   none
  3576. Description:   Pop an element from the macro stack.
  3577.  
  3578. Switches:
  3579.  
  3580.      C1 or C
  3581.           Clear all elements from the stack.
  3582.  
  3583.      C0
  3584.           Pop the top element (default).
  3585.  
  3586. Examples:
  3587.  
  3588.      {pops}
  3589.           Pop the top element.
  3590.  
  3591.      {pops-c}
  3592.           Clear the stack.
  3593.  
  3594. POPStack throws away the top element on the macro stack.  This element
  3595. would have been used by the next RETUrn function.
  3596.  
  3597. See also CALL, RETUrn, PUSHstack.
  3598.  
  3599.  
  3600. ===  PRINtlog  ===
  3601.  
  3602. Default key:   Alt+2
  3603. Description:   Set Print Log toggle.
  3604.  
  3605. Examples:
  3606.  
  3607.      {print}
  3608.           Toggle Print Log on/off.
  3609.  
  3610.  
  3611.  
  3612.                                     -68-
  3613.  
  3614.      {print y}
  3615.           Turn on Print Log.
  3616.  
  3617.      {print n}
  3618.           Turn off Print Log.
  3619.  
  3620.  
  3621. ===  PUSHstack  ===
  3622.  
  3623. Default key:   none
  3624. Description:   Push a return point onto the macro stack.
  3625.  
  3626. Examples:
  3627.  
  3628.      {push}
  3629.           Push the current location.
  3630.  
  3631.      {push abc}
  3632.           Push the location "abc".
  3633.  
  3634. When there are no arguments, the location pushed is the location of the
  3635. PUSHstack function itself (i.e., it will be executed again when a RETUrn is
  3636. encountered).
  3637.  
  3638. PUSHstack will push a return point onto the macro stack without
  3639. transferring control to the location (control continues in sequence).  A
  3640. subsequent RETUrn will transfer control to the location that was pushed.
  3641.  
  3642. POPStack will remove the top stack element without transferring control to
  3643. it (control continues in sequence).
  3644.  
  3645. TIPS on using PUSHstack:
  3646.  
  3647.  *   The return point will include the name of the current auxiliary file
  3648.      if the PUSHstack function is located in the auxiliary.
  3649.  
  3650.  *   PUSHstack cannot save a location that is in a Macro File that is not
  3651.      currently loaded.
  3652.  
  3653. See also CALL, RETUrn, POPStack.
  3654.  
  3655.  
  3656. ===  RCLOse  ===
  3657.  
  3658. Default key:   none
  3659. Description:   Close the read file.
  3660.  
  3661. Example:
  3662.  
  3663.      {rclose}
  3664.           No arguments.
  3665.  
  3666.  
  3667.  
  3668.                                     -69-
  3669.  
  3670. NOTE:  The read file will be closed automatically in the following
  3671. situations:
  3672.  
  3673.      1)   When an attempt is made to read past the end of the file.
  3674.      2)   When the macro terminates (STOP, EXIT, etc.).
  3675.  
  3676. See also ROPEn, READ.
  3677.  
  3678.  
  3679. ===  READ  ===
  3680.  
  3681. Default key:   none
  3682. Description:   Read a line from the read file to a variable.
  3683.  
  3684. Example:
  3685.  
  3686.      {read nextline}
  3687.           Read the next line in the file into the variable "nextline."
  3688.  
  3689. TIPS on reading files:
  3690.  
  3691.  *   A file must be open for reading or a Macro Error will result.
  3692.  
  3693.  *   Each READ will get the next line in the file (lines are terminated by
  3694.      carriage return and linefeed).
  3695.  
  3696.  *   When an attempt is made to read past the end of file, control will
  3697.      GOTO the label specified in the ROPEn.  If no label was specified or
  3698.      if the label was invalid, control will continue in sequence.  In
  3699.      either case the file is automatically closed and the variable is set
  3700.      to null.
  3701.  
  3702.  *   READ will set the Exit Code to 0 unless the end of file was
  3703.      encountered, in which case it will be set to 1.  The Exit Code is
  3704.      stored in the built-in variable "_err" and can be tested with the
  3705.      IFERrorlevel function.
  3706.  
  3707.  *   ALL control characters (below ASCII 28) will be discarded, including
  3708.      the carriage return/linefeed that terminates the line.
  3709.  
  3710.  *   Lines longer than 240 characters will be truncated to a length of 240.
  3711.  
  3712. See also ROPEn, RCLOse
  3713.  
  3714.  
  3715. ===  RETUrn  ===
  3716.  
  3717. Default key:   none
  3718. Description:   Return from a CALLed macro.
  3719.  
  3720.  
  3721.  
  3722.                                     -70-
  3723.  
  3724. Example:
  3725.  
  3726.      {return}
  3727.           No arguments.
  3728.  
  3729. This function will return control to the last location pushed onto the
  3730. macro stack (by CALL, PUSHstack, etc.).  The location may reside in a Macro
  3731. File that is not currently loaded (loading will occur automatically).
  3732.  
  3733. TIPS on using RETUrn:
  3734.  
  3735.  *   If a RETUrn is encountered and no elements remain on the macro stack,
  3736.      a STOP will occur.  This is useful in macros that are CALLed and also
  3737.      used standalone (such as protocol file transfer macros).
  3738.  
  3739.  *   If the macro filename popped from the macro stack is the same as the
  3740.      current auxiliary file, no load will occur.
  3741.  
  3742. See also CALL, CALOok, DIAL, PUSHstack, POPStack.
  3743.  
  3744.  
  3745. ===  ROPEn  ===
  3746.  
  3747. Default key:   none
  3748. Description:   Open a file for reading.
  3749.  
  3750. General Form:
  3751.  
  3752.      {ROPEn path\filename,label}
  3753.  
  3754.           path\filename
  3755.                The path\filename of the file to open.
  3756.  
  3757.           label
  3758.                A label to GOTO when a READ is attempted at the end of the
  3759.                file.
  3760.  
  3761.                IMPORTANT!  If the READ is in a CALLed subroutine, be sure
  3762.                to execute a RETUrn or POPS at the label.
  3763.  
  3764. Example:
  3765.  
  3766.      {ropen c:\bbs\file.txt,nomore}
  3767.           Open the file and set the label "nomore" to GOTO when the end of
  3768.           the file is reached.
  3769.  
  3770. TIPS on using ROPEn:
  3771.  
  3772.  *   Only one file may be opened for reading (and one for writing).
  3773.  
  3774.  *   The file will be automatically closed when the end of the file is
  3775.      encountered during a READ (whether or not a label is specified).  An
  3776.      RCLOse is not needed in this situation.
  3777.  
  3778.  
  3779.  
  3780.                                     -71-
  3781.  
  3782.  
  3783. See also READ, RCLOse.
  3784.  
  3785.  
  3786. ===  RTRAn  ===
  3787.  
  3788. Default key:   none
  3789. Description:   Maintain Receive Translate Table.
  3790.  
  3791. Switches:
  3792.  
  3793.      I1 or I
  3794.           Initialize Receive Translate Table to default values (consecutive
  3795.           0 to 255).
  3796.  
  3797.      I0
  3798.           Do not initialize (default).
  3799.  
  3800. Examples:
  3801.  
  3802.      {rtran y}
  3803.           Turn receive translation ON.
  3804.  
  3805.      {rtran-i n}
  3806.           Initialize the table and turn it OFF.
  3807.  
  3808.      {rtran 26,0}
  3809.           Change ASCII 26 to null (ASCII 0, which will not display).
  3810.  
  3811.      {rtran-i y,#8,224,240}
  3812.           Initialize the table, turn receive translation ON, change ASCII
  3813.           224 to 240, 225 to 241, ..., 231 to 247.  
  3814.  
  3815.      {rtran}
  3816.           Toggle receive translation ON/OFF.
  3817.  
  3818.      {rtran #13,65,78,#13,78,65,#13,97,110,#13,110,97}
  3819.           ROT13 translation.  This exchanges each letter in the first half
  3820.           of the alphabet with the corresponding letter from the second
  3821.           half (and vice-versa).
  3822.  
  3823. Rules for RTRAn arguments are the same as for the "rtr" item in the Setup
  3824. File.  In addition, "n" may be used as the first argument to turn receive
  3825. translation OFF at any time.
  3826.  
  3827. See "Edit Setup File" in Part I (COMMO.DOC) for details and more examples.
  3828.  
  3829. TIPS on using RTRAn:
  3830.  
  3831.  *   Some control characters are unaffected by translation when certain
  3832.      features are enabled.  Examples:  XON (17) and XOFF (19) are not
  3833.      translated when Software Flow Control is on.  ENQ (5) is not
  3834.      translated when ENQ/ACK emulation is on.
  3835.  
  3836.  
  3837.  
  3838.                                     -72-
  3839.  
  3840.  
  3841.  *   When the Capture Mode is set to RAW, data will be captured prior to
  3842.      translation.  FILTER and SCREEN captures will contain translated data.
  3843.  
  3844.  *   LOOKfor will always see translated data.  Use FILTER Capture Mode to
  3845.      see what LOOKfor sees.
  3846.  
  3847.  *   In GETString, incoming data (as well as locally typed characters) will
  3848.      be translated with the Receive Translate Table (it may be necessary to
  3849.      turn receive translation off during certain GETString functions).
  3850.  
  3851. See also STRAn.
  3852.  
  3853.  
  3854. ===  RXMOdem  ===
  3855.  
  3856. Default key:   none
  3857. Description:   Receive a file using the Xmodem protocol.
  3858.  
  3859. Switches:
  3860.  
  3861.      See RYMOdem (switches are the same).
  3862.  
  3863. Example:
  3864.  
  3865.      {rxmo-ya c:\dl\file.zip}
  3866.           Receive "file.zip", overwrite the file if it exists, sound the
  3867.           alarm.
  3868.  
  3869. Only one file may be received with each RXMOdem function (the file must be
  3870. explicitly named, but need not be given the same name as on the remote
  3871. system).
  3872.  
  3873. See RYMOdem for tips that apply to both RXMOdem and RYMOdem.
  3874.  
  3875.  
  3876. ===  RYMOdem  ===
  3877.  
  3878. Default key:   none
  3879. Description:   Receive files using the Ymodem Batch protocol.
  3880.  
  3881. Switches:
  3882.  
  3883.      NOTE: N, D, A and W switches are the same as for RZMOdem.
  3884.  
  3885.      C1 or C
  3886.           Use CRC error correction (default).
  3887.  
  3888.      C0
  3889.           Use Checksum error correction.
  3890.  
  3891.  
  3892.  
  3893.                                     -73-
  3894.  
  3895.      G1 or G
  3896.           Use streaming (fast) transfer method.
  3897.  
  3898.           IMPORTANT!  Use only with error-correcting modems or direct
  3899.           connections between computers.
  3900.  
  3901.      G0
  3902.           Use normal (error-correcting) transfer method (default).
  3903.  
  3904.      Y1 or Y
  3905.           Overwrite an existing file when a received file has the same name
  3906.           (the existing file will be erased).
  3907.  
  3908.      Y0
  3909.           Cancel the transfer if a received file has the same name as an
  3910.           existing file (default).
  3911.  
  3912. Examples:
  3913.  
  3914.      {rymo-ya %dldir}
  3915.           Receive files into the download directory, overwrite a file if it
  3916.           exists, sound the alarm.
  3917.  
  3918.      {rymo-gw3}
  3919.           Receive files using the "G" method into the current directory. 
  3920.           Wait 3 seconds before returning to the Terminal Screen.
  3921.  
  3922. Ymodem is a "batch" protocol that will receive multiple files.  Filenames
  3923. are transmitted by the sender and are used to name files at the receiving
  3924. end.  A filename "collision" will cause the transfer to cancel unless the
  3925. "Y" switch is used.  File sizes are also transmitted by the sender and are
  3926. used to truncate the file to the proper size.
  3927.  
  3928. TIPS on using RYMOdem and RXMOdem:
  3929.  
  3930.  *   The "G" method is specified by the receiver.  Be sure that the sender
  3931.      allows it before starting.
  3932.  
  3933.  *   Block size is established by the sender and may be changed on a block-
  3934.      by-block basis.
  3935.  
  3936.  *   Some conditions that will cancel a transfer:
  3937.        1)  10 consecutive errors.
  3938.        2)  Any error when "G" method is used.
  3939.        3)  File exists and the "Y" switch is not present.
  3940.        4)  The sender has transmitted CAN (^X) characters.
  3941.        5)  Loss of carrier.
  3942.  
  3943.  *   The Exit Code (test with IFER) will be set at the end of the transfer
  3944.      and will also be stored in the variable "_err".  0 means all files
  3945.      were transferred successfully.  1 means one or more files in the batch
  3946.      were not completed.
  3947.  
  3948.  
  3949.  
  3950.                                     -74-
  3951.  
  3952.  *   If the Usage Log is enabled, an entry will be made after each file is
  3953.      transferred (or if a transfer is cancelled).
  3954.  
  3955.  
  3956. ===  RZMOdem  ===
  3957.  
  3958. Default key:   none
  3959. Description:   Receive a file using the Zmodem protocol.
  3960.  
  3961. Switches:
  3962.  
  3963.      R1 or R
  3964.           Resume like-named files.  If the incoming file is longer, the
  3965.           transfer will resume at the end of the existing file.  No check
  3966.           is made to determine if the common portion of the file is
  3967.           identical.
  3968.  
  3969.      N1 or N
  3970.           Rename incoming files if like-named files exist.  A letter "A"
  3971.           through "Z" will be used in place of the last character of
  3972.           "filename.ext".
  3973.  
  3974.      Y1 or Y
  3975.           Overwrite like-named files.  The existing file will be deleted at
  3976.           the start of the transfer.
  3977.  
  3978.      D1 or D
  3979.           Cancel transfer if Carrier Detect is lost (default).
  3980.  
  3981.           NOTE:  If Carrier Detect is off when the transfer is started,
  3982.           this switch will behave as if "D0" had been set.
  3983.  
  3984.      D0
  3985.           Ignore state of Carrier Detect.
  3986.  
  3987.      A1 or A
  3988.           Sound the success or fail alarm at the end of the transfer.
  3989.  
  3990.      A0
  3991.           Do not sound the alarm (default).
  3992.  
  3993.      W
  3994.           Wait for a keypress at end of transfer.
  3995.  
  3996.      Wn
  3997.           Wait for "n" seconds, "n" may range from 0 to 999.  Press a key
  3998.           to cancel the wait.
  3999.  
  4000.           NOTE:  Default (no "W" switch) is no wait.
  4001.  
  4002. The "R", "N" and "Y" switches are mutually exclusive (use only one).
  4003.  
  4004.  
  4005.  
  4006.                                     -75-
  4007.  
  4008. Example:
  4009.  
  4010.      {rzmo-ra %dldir}
  4011.           Receive files into the download directory, resume partial files,
  4012.           sound the alarm.
  4013.  
  4014. TIPS on using RZMOdem:
  4015.  
  4016.  *   The sender may also request that the file be "resumed."  The "N" and
  4017.      "Y" switches will override this request.
  4018.  
  4019.  *   If a like-named file exists in the download directory and no action is
  4020.      specified, the file will be "skipped."
  4021.  
  4022.  *   If an incoming filename is not DOS compatible, the file will be
  4023.      "skipped."
  4024.  
  4025.  *   Some conditions that will cancel a transfer:
  4026.        1)  20 consecutive errors.
  4027.        2)  The sender has cancelled.
  4028.        3)  Unable to open a file.
  4029.        4)  Disk is full.
  4030.        5)  Loss of carrier.
  4031.  
  4032.  *   The Exit Code (test with IFER) will be set at the end of the transfer
  4033.      and will also be stored in the variable "_err".  0 means all files
  4034.      were transferred successfully.  1 means one or more files in the batch
  4035.      were not completed.
  4036.  
  4037.  *   If the Usage Log is enabled, an entry will be made after each file is
  4038.      transferred (or if a transfer is cancelled).
  4039.  
  4040.  
  4041. ===  SCREen  ===
  4042.  
  4043. Default key:   Alt+I
  4044. Description:   Screen Image Save.
  4045.  
  4046. Examples:
  4047.  
  4048.      {screen}
  4049.           Open Screen Image Save window.
  4050.  
  4051.      {screen y}
  4052.           Append screen image to current file.
  4053.  
  4054.      {screen y,commo.scr}
  4055.           Append screen image to indicated file. (and change current
  4056.           path\filename).
  4057.  
  4058.      {screen n,c:\file.xyz}
  4059.           Change current screen image path\filename (don't save screen to
  4060.           file).
  4061.  
  4062.  
  4063.  
  4064.                                     -76-
  4065.  
  4066.  
  4067.  
  4068. ===  SCROllback  ===
  4069.  
  4070. Default key:   Alt+K
  4071. Description:   Display Scrollback Buffer
  4072.  
  4073. Example:
  4074.  
  4075.      {scroll}
  4076.           No arguments.
  4077.  
  4078.  
  4079. ===  SEND  ===
  4080.  
  4081. Default key:   none
  4082. Description:   Send a string to the modem (serial port).
  4083.  
  4084. Switches:
  4085.  
  4086.      N1 or N
  4087.           Do NOT convert control characters.
  4088.  
  4089.      N0
  4090.           Convert control characters as described in Appendix D (default).
  4091.  
  4092.      B1 or B
  4093.           Byte mode.  Characters are represented by decimal or hex numbers,
  4094.           separated by commas.  Hex numbers are preceded by a "0" and all
  4095.           characters from 0 to 255 may be sent.  There is no conversion, no
  4096.           translation and no local echo.
  4097.  
  4098.      B0
  4099.           Normal string mode (default).
  4100.  
  4101.      W1 or W
  4102.           Wait until all characters have been transmitted before proceeding
  4103.           to the next function (default).
  4104.  
  4105.      W0
  4106.           All characters in the string will be stored in the transmit
  4107.           buffer.  Then {COMMO} will proceed without waiting (unless the
  4108.           buffer is full).  The Inter-character Delay and any delays in the
  4109.           string will be ignored.
  4110.  
  4111. Examples:
  4112.  
  4113.      {send Firstname|~~Lastname|~~%_pas|}
  4114.           Send first and last names with carriage returns and 1 second
  4115.           delays, then send the current password and a <cr>.
  4116.  
  4117.  
  4118.  
  4119.                                     -77-
  4120.  
  4121.      {send ^[^[}
  4122.           Send two <esc> characters.
  4123.  
  4124.      {send  }
  4125.           Send a space (there must be two spaces, the first is the
  4126.           separator).
  4127.  
  4128.      {send %line}
  4129.           Send the string in the variable "line".
  4130.  
  4131.      {send-n ^A|~}
  4132.           Send the characters as written.  Do not convert the special
  4133.           characters.
  4134.  
  4135.      {send-b 123,043,04f,77,04d,79,07d}
  4136.           Send "{COMMO}"
  4137.  
  4138.      {send-w0 Now is the time.}
  4139.           Send the string, don't wait.
  4140.  
  4141.      {send}
  4142.           Wait for all characters in the transmit buffer to be sent.
  4143.  
  4144.  
  4145. ===  SETDial  ===
  4146.  
  4147. Default key:   none
  4148. Description:   Set parameters for dialing.
  4149.  
  4150. Examples:
  4151.  
  4152.      {setdial 60,15}
  4153.           Set the dialing cycle timer to 60 seconds and the Inter-dial
  4154.           Delay to 15 seconds.
  4155.  
  4156.      {setd ,3}
  4157.           Change only the Inter-dial Delay timer.
  4158.  
  4159. The first argument is the dialing cycle time limit.  This is the number of
  4160. seconds {COMMO} will allow after sending the dial command to the modem. 
  4161. Range is from 1 to 999.
  4162.  
  4163. The second argument is the inter-dial delay timer.  This is the number of
  4164. seconds before {COMMO} dials the next number.  Range is from 1 to 999.
  4165.  
  4166. NOTE:  Changes to dialing parameters override the Setup File values and
  4167. remain in effect until {COMMO} is exited.
  4168.  
  4169. See also DIAL.
  4170.  
  4171.  
  4172.  
  4173.                                     -78-
  4174.  
  4175. ===  SETEsc  ===
  4176.  
  4177. Default key:   none
  4178. Description:   Define a label to GOTO when Esc is pressed.
  4179.  
  4180. General form:
  4181.  
  4182.      {setesc label}
  4183.  
  4184.           label
  4185.                A label to GOTO when the user presses Esc during macro
  4186.                execution.
  4187.  
  4188. Switches:
  4189.  
  4190.      K0
  4191.           Ignore all typed keys except Ctrl-Break (i.e., lock the
  4192.           keyboard).  If a macro label is included, the macro will be
  4193.           executed when Ctrl-Break is pressed (there will be no prompt). 
  4194.           Otherwise Ctrl-Break causes the macro to STOP.  In either case,
  4195.           the keyboard is active again as soon as Ctrl-Break is pressed.
  4196.  
  4197.           NOTE:  System keys such as Ctrl-Alt-Del, Shift-PrtSc, NumLock,
  4198.           etc., are not affected (they remain active).
  4199.  
  4200.      K1 or K
  4201.             Allow all keys (default).
  4202.  
  4203.      P1 or P
  4204.           The user will be prompted with, "A macro is running.  Terminate
  4205.           it?."  If the user answers "no," macro execution will continue as
  4206.           if nothing had happened.  If "yes," the current macro will be
  4207.           STOPped and the macro at the label will be started.  If the label
  4208.           does not exist, a STOP will be executed.  P1 is the default.
  4209.  
  4210.      P0
  4211.           The user will not be prompted.  The current macro will be STOPped
  4212.           and the macro at the label will be started.  If the label does
  4213.           not exist, a STOP will be executed.
  4214.  
  4215. Examples:
  4216.  
  4217.      {setesc finish}
  4218.           GOTO label, with prompt.
  4219.  
  4220.      {sete-p0 done}
  4221.           GOTO label, without prompt.
  4222.  
  4223.      {setesc}
  4224.           Reset to no label (STOP on Esc).
  4225.  
  4226. This function is used to "capture" the Esc key during macro execution.  It
  4227. can help prevent accidental macro terminations.
  4228.  
  4229.  
  4230.  
  4231.                                     -79-
  4232.  
  4233.  
  4234. NOTE:  In the various command windows, Esc is normally used to exit the
  4235. window.  Use Ctrl+Break to bring up the prompt.
  4236.  
  4237.  
  4238. ===  SETGet  ===
  4239.  
  4240. Default key:   none
  4241. Description:   Set parameters for GETString functions.
  4242.  
  4243. General form:
  4244.  
  4245.      {SETGet seconds,label,y/n/l,string}
  4246.  
  4247.           seconds
  4248.                GETString timeout.  If a character is not entered in the
  4249.                specified amount of time, the macro in the second argument
  4250.                will be started.  May be 0 to 999.  Default is 0 (disabled).
  4251.  
  4252.           label
  4253.                Timeout macro.  Macro to GOTO if the time in the first
  4254.                argument expires.  If no macro is specified or if the macro
  4255.                label is invalid, control will pass to the function
  4256.                following the GETString.  Default is no macro.
  4257.  
  4258.                Note that if the timer expires no variable assignment will
  4259.                be made.  Any previous assignment will be unaltered.
  4260.  
  4261.                IMPORTANT!  If the GETString is in a CALLed subroutine, be
  4262.                sure to execute a RETUrn or POPS at the label.
  4263.  
  4264.           y/n/l
  4265.                Echo Status.  If this is "yes", characters entered at the
  4266.                local or remote terminals will be echoed back to the remote
  4267.                and displayed locally.  This is the default.
  4268.  
  4269.                If "no", characters will not be echoed to either location.
  4270.  
  4271.                If "local", characters will be displayed locally, but not
  4272.                echoed to the remote.  This should be used when the remote
  4273.                is a host system.
  4274.  
  4275.                IMPORTANT!  This setting is independent of Local Echo.  Turn
  4276.                on Local Echo if necessary for local display of data
  4277.                transmitted with SEND, ASCIiup, etc.
  4278.  
  4279.           string
  4280.                Terminator response.  This string will be sent and/or
  4281.                displayed locally (in accord with the Echo Status) when a
  4282.                carriage return is received (input terminated).  This is
  4283.                typically a carriage return/linefeed.  May be up to 32
  4284.                characters.  Default is no string.
  4285.  
  4286.  
  4287.  
  4288.                                     -80-
  4289.  
  4290. Example:
  4291.  
  4292.      {setg 120,noget,y,^m^j}
  4293.           Set GETString parameters.
  4294.  
  4295.  
  4296. The SETGet function will set parameters for all subsequent GETString
  4297. functions.  It may be executed at any time to modify the parameters.
  4298.  
  4299. When macro execution terminates, the parameters will be reset to the
  4300. default values.
  4301.  
  4302. Default arguments are:
  4303.  
  4304.      GETString timeout        0 (disabled)
  4305.      Timeout macro            none 
  4306.      Echo status              y (echo on)
  4307.      Terminator response      none
  4308.  
  4309. IMPORTANT!  Null arguments in the SETGet function will be set to these
  4310. defaults.
  4311.  
  4312. See also GETString.
  4313.  
  4314.  
  4315. ===  SETLook  ===
  4316.  
  4317. Default key:   none
  4318. Description:   Set parameters for LOOKfor functions.
  4319.  
  4320. General form:
  4321.  
  4322.      {SETLook seconds,label,seconds,response}
  4323.  
  4324.           seconds
  4325.                LOOKfor timeout.  Maximum time in seconds to look for
  4326.                strings.  If no string is found in the allotted time, the
  4327.                macro in the second argument will be started.  May be 0 to
  4328.                999.  Note that this timer is restarted whenever a string is
  4329.                sent by SSLOok.  Default is 0 (disabled).
  4330.  
  4331.           label
  4332.                Timeout macro.  Macro to GOTO if the time in the first
  4333.                argument expires.  If no macro is specified or if the macro
  4334.                label is invalid, control will pass to the function
  4335.                following the LOOKfor.
  4336.  
  4337.                IMPORTANT!  If the LOOKfor is in a CALLed subroutine, be
  4338.                sure to execute a RETUrn or POPS at the label.
  4339.  
  4340.  
  4341.  
  4342.                                     -81-
  4343.  
  4344.           seconds
  4345.                "No data" timeout.  If no characters are received from the
  4346.                remote system for the specified amount of time, {COMMO} will
  4347.                take action as indicated by the "N" switch (see below).  The
  4348.                timer is restarted whenever a character is received.  May be
  4349.                0 to 999.  Default is 0 (disabled).
  4350.  
  4351.                IMPORTANT!  The timeout should be long enough (or disabled
  4352.                entirely) to prevent a premature response.
  4353.  
  4354.           response
  4355.                This argument is a string or a macro label depending on the
  4356.                setting of the "N" switch (see below).  Default is no string
  4357.                or label.
  4358.  
  4359. Switches:
  4360.  
  4361.      N0
  4362.           The response argument is a string (up to 32 characters).  This is
  4363.           useful if unexpected prompts appear, such as "Press any key" or
  4364.           "More [Y/n]".  Specify a generic response such as "|" or "n|" and
  4365.           {COMMO} will send it each time the "no data" timer expires
  4366.           (default).
  4367.  
  4368.           NOTE:  The timer will be restarted after the response is sent or
  4369.           if any keys are typed while waiting (allowing a manual response
  4370.           to a prompt which the macro does not handle).
  4371.  
  4372.      N or N1
  4373.           The response argument is a macro label.  If the "no data" timer
  4374.           expires, {COMMO} will GOTO the label.
  4375.  
  4376. Examples:
  4377.  
  4378.      {setl 60,abc,4,n|}
  4379.           The LOOKfor timeout is set to 60 seconds; GOTO "abc" if the timer
  4380.           expires.  If no characters are received for 4 seconds, send the
  4381.           string "n|" (and keep looking).
  4382.  
  4383.      {setl-n 300,toolong,30,nodata}
  4384.           The LOOKfor timeout is set to 300 seconds; GOTO "toolong" if the
  4385.           timer expires.  If no characters are received for 30 seconds,
  4386.           GOTO the label "nodata".
  4387.  
  4388. The SETLook function will set parameters for subsequent LOOKfor functions
  4389. and may be executed at any time to modify the parameters.
  4390.  
  4391. When macro execution terminates, the parameters will be reset to the
  4392. default values.
  4393.  
  4394.  
  4395.  
  4396.                                     -82-
  4397.  
  4398. Default arguments are:
  4399.  
  4400.      LOOKfor timeout     0 (disabled)
  4401.      Timeout macro       none 
  4402.      "No data" timeout   0 (disabled)
  4403.      Response            none
  4404.  
  4405. IMPORTANT!  Null arguments in the SETLook function will revert to these
  4406. defaults.
  4407.  
  4408. See also LOOKfor, SSLOok, CALOok, GOLOok.
  4409.  
  4410.  
  4411. ===  SETR  ===
  4412.  
  4413. Default key:   none
  4414. Description:   Define a label to GOTO when a Macro Error occurs.
  4415.  
  4416. Examples:
  4417.  
  4418.      {setr error}
  4419.           GOTO "error" when any Macro Error occurs.
  4420.  
  4421.      {setr}
  4422.           Reset to no label.
  4423.  
  4424. SETR allows a macro to get control when a Macro Error occurs.  All macro
  4425. parameters (see STOP) will be reset after the error (including the SETR
  4426. label).
  4427.  
  4428. TIPS on using SETR:
  4429.  
  4430.  *   The built-in variable "_met" will contain an error message describing
  4431.      the most recent error.
  4432.  
  4433.  *   Variable Space will not be changed.
  4434.  
  4435.  *   If the specified label does not exist, or if no label is currently
  4436.      specified, {COMMO} will STOP and indicate the location of the error.
  4437.  
  4438.  
  4439. ===  SETUp  ===
  4440.  
  4441. Default key:   Alt+G
  4442. Description:   Edit Setup File.
  4443.  
  4444. Example:
  4445.  
  4446.      {setup}
  4447.           No arguments.
  4448.  
  4449.  
  4450.  
  4451.                                     -83-
  4452.  
  4453.  
  4454.  
  4455. ===  SETVariable  ===
  4456.  
  4457. Default key:   none
  4458. Description:   Assign a string to a variable name.
  4459.  
  4460. General form:
  4461.  
  4462.      {SETVariable name,string}
  4463.  
  4464.           name
  4465.                The name of the variable to which the string will be
  4466.                assigned.
  4467.  
  4468.           string
  4469.                A string of up to 240 characters (after expansion of any
  4470.                variables).  The expanded string may also be the name of an
  4471.                environment variable (see the "E" switch below).
  4472.  
  4473. Switches:
  4474.  
  4475.      E1 or E
  4476.           This switch indicates that the second argument is a DOS
  4477.           environment variable.  If it is not found in the environment, the
  4478.           variable will be set to NULL.
  4479.  
  4480.           Note that environment variable names are CASE SENSITIVE (they are
  4481.           usually upper case).
  4482.  
  4483.      E0
  4484.           Normal variable (default).
  4485.  
  4486.      R1 or R
  4487.           Release variables from String Variable Space, starting with the
  4488.           named variable, to the end of Variable Space.  Released variables
  4489.           are set to null.
  4490.  
  4491.      R0
  4492.           Release all variables from Variable Space.
  4493.  
  4494.      S2
  4495.           Expand all variables in the second argument (as usual), then
  4496.           expand the second argument again.  This allows variables that are
  4497.           contained within variables to be expanded.
  4498.  
  4499.      S1 or S
  4500.           Expand all variables in the second argument, then treat the
  4501.           second argument as a variable name and expand it.  Note that the
  4502.           string resulting from the first expansion must NOT begin with a
  4503.           "%".  This can be used to create a "subscript."
  4504.  
  4505.  
  4506.  
  4507.                                     -84-
  4508.  
  4509.      S0
  4510.           Normal expansion of the second argument (default).
  4511.  
  4512. Examples:
  4513.  
  4514.      {setv net,nodeid}
  4515.           Assign the string "nodeid" to the variable name "net".
  4516.  
  4517.      {setv nodeid,ggcs_bbs}
  4518.           Assign the string "ggcs_bbs" to the variable name "nodeid".
  4519.  
  4520.      {setv-s board,%net}
  4521.           Assuming the above examples have been executed, this will set the
  4522.           variable "board" to "ggcs_bbs".
  4523.  
  4524.      {setv-s xxx,yyy%index}
  4525.           Suppose the variable "index" has the value "3".  It will be
  4526.           expanded first, then "yyy3" will be expanded and its value
  4527.           assigned to "xxx".
  4528.  
  4529.      {setv-s2 welcome,%wel_msg}
  4530.           If the variable "wel_msg" contains the string "Welcome, %name!"
  4531.           and the variable "name" contains the string "Fred", the variable
  4532.           "welcome" will be set to "Welcome, Fred!".
  4533.  
  4534.      {setv-e abc,TABLE}
  4535.           Assuming a "SET TABLE=" DOS command has been executed prior to
  4536.           running {COMMO}, the variable "abc" will be set to the
  4537.           environment string.
  4538.  
  4539.      {setv-r _mark_}
  4540.           Release all variables from the "_mark_" variable to the end of
  4541.           Variable Space.  The "_mark_" variable should have been set to a
  4542.           non-null value at some prior time.
  4543.  
  4544.      {setv abc} or {setv abc,}
  4545.           Set the variable "abc" to null (it will be deleted from variable
  4546.           space).
  4547.  
  4548.  
  4549. ===  SFICtrl  ===
  4550.  
  4551. Default key:   none
  4552. Description:   Speech Friendly Interface control.
  4553.  
  4554.  
  4555.  
  4556.                                     -85-
  4557.  
  4558. Examples:
  4559.  
  4560.      {sfic}
  4561.           Toggle Speech Friendly Interface on/off.
  4562.  
  4563.      {sfic y}
  4564.           Turn on Speech Friendly Interface.
  4565.  
  4566.      {sfic n}
  4567.           Turn off Speech Friendly Interface.
  4568.  
  4569. The built-in variable "_sfi" is 1 when the Speech Friendly Interface is ON,
  4570. 0 when it is OFF.
  4571.  
  4572.  
  4573. ===  SHELl  ===
  4574.  
  4575. Default key:   Alt+S
  4576. Description:   Shell to DOS.
  4577.  
  4578. Switches:
  4579.  
  4580.      M1 or M
  4581.           Display "Swapping to Disk" just prior to swapping (default).
  4582.  
  4583.      M0
  4584.           Do not display the swapping message.
  4585.  
  4586.      S1 or S
  4587.           Swap to disk before shelling to DOS (see details under EXECute,
  4588.           "Using the Swap to Disk Switch").
  4589.  
  4590.      S0
  4591.           Do not swap to disk (default).
  4592.  
  4593. Examples:
  4594.  
  4595.      {shell}
  4596.           No arguments.
  4597.  
  4598.      {shell-s}
  4599.           Swap to disk before shelling to DOS.
  4600.  
  4601.  
  4602. ===  SIGNal  ===
  4603.  
  4604. Default key:   none
  4605. Description:   Set state of hardware signals.
  4606.  
  4607.  
  4608.  
  4609.                                     -86-
  4610.  
  4611. Switches:
  4612.  
  4613.      D1 or D
  4614.           Set DTR high.
  4615.  
  4616.      D0
  4617.           Set DTR low.
  4618.  
  4619.      R1 or R
  4620.           Set RTS high.
  4621.  
  4622.      R0
  4623.           Set RTS low.
  4624.  
  4625. Example:
  4626.  
  4627.      {signal-d0r1}
  4628.           Turn off DTR, turn on RTS.
  4629.  
  4630. The "D" and "R" switches are used to control the RS-232C signals DTR (Data
  4631. Terminal Ready) and RTS (Request To Send).  The default for each switch is
  4632. to leave the signal unchanged.  Use these with care due to interaction with
  4633. Hardware Flow Control, etc.
  4634.  
  4635.  
  4636. ===  SOUNd  ===
  4637.  
  4638. Default key:   none
  4639. Description:   Set Master Sound toggle.
  4640.  
  4641. Examples:
  4642.  
  4643.      {sound}
  4644.           Toggle Master Sound on/off.
  4645.  
  4646.      {sound y}
  4647.           Turn on Master Sound.
  4648.  
  4649.      {sound n}
  4650.           Turn off Master Sound.
  4651.  
  4652.  
  4653. ===  SPDCtrl  ===
  4654.  
  4655. Default key:   none
  4656. Description:   Serial port display control.
  4657.  
  4658.  
  4659.  
  4660.                                     -87-
  4661.  
  4662. Examples:
  4663.  
  4664.      {spdc y}
  4665.           Serial port display is ON.
  4666.  
  4667.      {spdc n}
  4668.           Serial port display is OFF.
  4669.  
  4670. This function will suppress display of any data received from the serial
  4671. port.  It can be used when a "clean" display is desired during automated
  4672. procedures.
  4673.  
  4674. TIPS on using SPDCtrl:
  4675.  
  4676.  *   Serial port display can be suppressed only while a macro is running
  4677.      (it will be restored to ON at macro termination).
  4678.  
  4679.  *   ANSI control sequences are not processed while the display is OFF
  4680.      (Terminal Emulation effectively reverts to TTY).
  4681.  
  4682.  *   LOOKfor will react as if TTY emulation was set (ANSI sequences are not
  4683.      stripped).  If necessary, make a manual run using TTY emulation to see
  4684.      what the LOOKfor will see.
  4685.  
  4686.  *   SCREEN Capture Mode will not capture any of the incoming data.  If
  4687.      capture is required, RAW mode or FILTER mode must be used (note that
  4688.      ANSI sequences will not be removed).
  4689.  
  4690.  
  4691. ===  SPOCtrl  ===
  4692.  
  4693. Default key:   none
  4694. Description:   Serial port output control.
  4695.  
  4696. Examples:
  4697.  
  4698.      {spoc y}
  4699.           Serial port output is ON.
  4700.  
  4701.      {spoc n}
  4702.           Serial port output is OFF.
  4703.  
  4704. This function will inhibit any data from being sent to the serial port. 
  4705. All other program operations will be normal.  It can be used for "local
  4706. mode" in host macros (no data is sent to the modem).
  4707.  
  4708. TIPS on using SPOCtrl:
  4709.  
  4710.  *   Serial port output can be inhibited only while a macro is running (it
  4711.      will be restored to ON at macro termination).
  4712.  
  4713.  *   Dialing and internal file transfer protocols will not operate properly
  4714.      if serial port output is turned OFF.
  4715.  
  4716.  
  4717.  
  4718.                                     -88-
  4719.  
  4720.  
  4721.  
  4722. ===  SSLOok  ===
  4723.  
  4724. Default key:   none
  4725. Description:   Send a string when a string appears.
  4726.  
  4727. General form:
  4728.  
  4729.      {SSLOok name,target}
  4730.  
  4731.           name
  4732.                The name of a string variable (MUST be a variable).
  4733.  
  4734.           target
  4735.                The ASCII string to look for.  The string begins following
  4736.                the "," and is terminated by the "}".
  4737.  
  4738. Switches:
  4739.  
  4740.      R1 or R
  4741.           Send a carriage return after sending the variable string to the
  4742.           serial port.
  4743.  
  4744.      R0
  4745.           Do not send a carriage return (default).
  4746.  
  4747. Example:
  4748.  
  4749.      {setv ss_r,|} {setv ss_nr,n|}
  4750.      ...
  4751.      {sslo-r _pas,password:}
  4752.      {sslo ss_r,Press enter to continue}
  4753.      {sslo ss_nr,Do you want to log off?}
  4754.      {look command?} ...
  4755.  
  4756. SSLOok is used in conjunction with the LOOKfor function.  It sets up an
  4757. additional string to look for.  When the target string appears, the string
  4758. in the variable is sent to the serial port.  The LOOKfor timeout (specified
  4759. in a SETLook) is restarted and the LOOKfor continues to look for all
  4760. specified strings.
  4761.  
  4762. See LOOKfor for details, examples and tips on using SSLOok.
  4763.  
  4764. See also CALOok, GOLOok, SETLook.
  4765.  
  4766.  
  4767. ===  STATusline  ===
  4768.  
  4769. Default key:   none
  4770. Description:   Set Status Line toggle.
  4771.  
  4772.  
  4773.  
  4774.                                     -89-
  4775.  
  4776. IMPORTANT!  The Status Line is {COMMO}'s instrument panel.  You should not
  4777. turn it off until you are familiar with operating the program.
  4778.  
  4779. Examples:
  4780.  
  4781.      {statusline}
  4782.           Toggle Status Line on/off.
  4783.  
  4784.      {status y}
  4785.           Turn on Status Line.
  4786.  
  4787.      {status n}
  4788.           Turn off Status Line.
  4789.  
  4790. When the Status Line is off (not visible), The Terminal Screen has one
  4791. additional display row (e.g., 25 rows instead of 24).
  4792.  
  4793. The STATusline function is ignored while in Chat Mode.
  4794.  
  4795.  
  4796. ===  STOP  ===
  4797.  
  4798. Default key:   none
  4799. Description:   Halt macro execution.
  4800.  
  4801. Examples:
  4802.  
  4803.      {stop}
  4804.           No arguments.
  4805.  
  4806.      {}
  4807.           Short form.
  4808.  
  4809. STOP always returns {COMMO} to manual operation in the Terminal Screen. 
  4810. All macro parameters are reset (except string variables).  This includes
  4811. the macro push/pop stack, SETLook, SETGet, SETEsc, etc.  Files opened with
  4812. ROPEn and WOPEn will be closed.
  4813.  
  4814.  
  4815. ===  STRAn  ===
  4816.  
  4817. Default key:   none
  4818. Description:   Maintain Send Translate Table.
  4819.  
  4820. Switches:
  4821.  
  4822.      I1 or I
  4823.           Initialize Send Translate Table to default values (consecutive 0
  4824.           to 255).
  4825.  
  4826.      I0
  4827.           Do not initialize (default).
  4828.  
  4829.  
  4830.  
  4831.                                     -90-
  4832.  
  4833. Examples:
  4834.  
  4835.      {stran y}
  4836.           Turn send translation ON.
  4837.  
  4838.      {stran-i n}
  4839.           Initialize the table and turn it OFF.
  4840.  
  4841.      {stran-i y,92,47}
  4842.           Initialize the table, turn send translation ON, change "\" to
  4843.           "/".
  4844.  
  4845.      {stran}
  4846.           Toggle send translation ON/OFF.
  4847.  
  4848.      {stran #13,65,78,#13,78,65,#13,97,110,#13,110,97}
  4849.           ROT13 translation.  This swaps the first 13 letters of the
  4850.           alphabet for the second 13.
  4851.  
  4852. Rules for STRAn arguments are the same as for the "str" item in the Setup
  4853. File.  In addition, "n" may be used as the first argument to turn send
  4854. translation OFF at any time.
  4855.  
  4856. See "Edit Setup File" in Part I (COMMO.DOC) for details and more examples.
  4857.  
  4858. TIPS on using STRAn:
  4859.  
  4860.  *   Some control characters are unaffected by translation when certain
  4861.      features are enabled.  Examples:  XON (17) and XOFF (19) are not
  4862.      translated when Software Flow Control is on.  When ENQ/ACK emulation
  4863.      is on, an ACK sent in response to an ENQ will not be translated.
  4864.  
  4865.  *   In GETString, data echoed to the modem (and displayed locally) will be
  4866.      translated with the Send Translate Table (it may be necessary to turn
  4867.      send translation off during certain GETString functions).
  4868.  
  4869. See also RTRAn.
  4870.  
  4871.  
  4872. ===  SUBString  ===
  4873.  
  4874. Default key:   none
  4875. Description:   Move a substring to a variable.
  4876.  
  4877. General form:
  4878.  
  4879.      {SUBString name,start,count,string}
  4880.  
  4881.           name
  4882.                The name of the variable to which the substring will be
  4883.                assigned.
  4884.  
  4885.  
  4886.  
  4887.                                     -91-
  4888.  
  4889.           start
  4890.                The starting character number (first character is "1").  If
  4891.                it is negative, {COMMO} will count in from the end of the
  4892.                string.
  4893.  
  4894.                If it is too large and positive, the substring will be null.
  4895.  
  4896.                If it is too large and negative, the substring will start at
  4897.                the beginning of the string.
  4898.  
  4899.           count
  4900.                The number of characters to use.  If the number is too
  4901.                large, {COMMO} will use as many as possible.  If the count
  4902.                is 0, the substring will be null.
  4903.  
  4904.           string
  4905.                The string to use.
  4906.  
  4907. Examples:
  4908.  
  4909.      {subs var_sub,2,4,abcdefgh}
  4910.           Set "var-sub" to "bcde".
  4911.  
  4912.      {subs newvar,-5,20,abcdefgh}
  4913.           Set "newvar" to "defgh".
  4914.  
  4915.  
  4916. ===  SXMOdem  ===
  4917.  
  4918. Default key:   none
  4919. Description:   Send a file using the Xmodem protocol.
  4920.  
  4921. Switches:
  4922.  
  4923.      See SYMOdem (switches are the same).
  4924.  
  4925. Example:
  4926.  
  4927.      {sxmo-ka c:\ul\file.zip}
  4928.           Send "file.zip" using 1024 byte block size (Xmodem-1k), sound the
  4929.           alarm.
  4930.  
  4931. Only one file may be sent with each SXMOdem function.
  4932.  
  4933. See SYMOdem for tips that apply to both SXMOdem and SYMOdem.
  4934.  
  4935.  
  4936. ===  SYMOdem  ===
  4937.  
  4938. Default key:   none
  4939. Description:   Send a file using the Ymodem Batch protocol.
  4940.  
  4941.  
  4942.  
  4943.                                     -92-
  4944.  
  4945. Switches:
  4946.  
  4947.      NOTE: U, D, A and W switches are the same as for SZMOdem.
  4948.  
  4949.      K1 or K
  4950.           Use 1024 byte block size.
  4951.  
  4952.      K0
  4953.           Use 128 byte block size (default).
  4954.  
  4955. Examples:
  4956.  
  4957.      {symo-ka %uldir\*.zip}
  4958.           Send all .ZIP files in the upload directory using 1024 byte block
  4959.           size, sound the alarm.
  4960.  
  4961.      {symo-k c:\subdir\*.*,@c:\ul\file.lst,info.txt,a:*.qw?}
  4962.           Send all files listed using 1024 byte block size.
  4963.  
  4964. See "File Specifications" under SZMOdem for more details on specifying
  4965. files for uploading.
  4966.  
  4967. TIPS on using SYMOdem and SXMOdem:
  4968.  
  4969.  *   CRC vs. Csum mode and use of "G" method is determined by the receiver. 
  4970.      Block size is determined by the sender.  {COMMO} will always use 1024
  4971.      byte blocks with "G" method.
  4972.  
  4973.  *   Some conditions that will cancel a transfer:
  4974.        1)  10 consecutive errors.
  4975.        2)  Any error when "G" method is used.
  4976.        3)  The receiver has transmitted CAN (^X) characters.
  4977.        4)  Loss of carrier.
  4978.  
  4979.  *   The Exit Code (test with IFER) will be set at the end of the transfer
  4980.      and will also be stored in the variable "_err".  0 means all files
  4981.      were transferred successfully.  1 means one or more files in the batch
  4982.      were not completed.
  4983.  
  4984.  *   If the Usage Log is enabled, an entry will be made after each file is
  4985.      transferred (or if a transfer is cancelled).
  4986.  
  4987.  
  4988. ===  SZMOdem  ===
  4989.  
  4990. Default key:   none
  4991. Description:   Send a file using the Zmodem Batch protocol.
  4992.  
  4993.  
  4994.  
  4995.                                     -93-
  4996.  
  4997. Switches:
  4998.  
  4999.      R1 or R
  5000.           Tell the receiving program to resume the transfer at the end of
  5001.           the existing file.
  5002.  
  5003.      U1 or U
  5004.           Delete files after successful transmission.  Use with CAUTION!
  5005.  
  5006.      D1 or D
  5007.           Cancel transfer if Carrier Detect is lost (default).
  5008.  
  5009.           NOTE:  If Carrier Detect is off when the transfer is started,
  5010.           this switch will behave as if "D0" had been set.
  5011.  
  5012.      D0
  5013.           Ignore state of Carrier Detect.
  5014.  
  5015.      A1 or A
  5016.           Sound the success or fail alarm at end of the transfer.
  5017.  
  5018.      A0
  5019.           Do not sound the alarm (default).
  5020.  
  5021.      W
  5022.           Wait for a keypress at end of transfer.
  5023.  
  5024.      Wn
  5025.           Wait for "n" seconds, "n" may range from 0 to 999.  Press a key
  5026.           to cancel the wait.
  5027.  
  5028.           NOTE:  Default (no "W" switch) is no wait.
  5029.  
  5030. Examples:
  5031.  
  5032.      {szmo-a %uldir\*.*}
  5033.           Send all files in the upload directory, sound the alarm when
  5034.           finished.
  5035.  
  5036.      {szmo-u ginger.rep}
  5037.           Send "ginger.rep" and delete it after a successful transfer.
  5038.  
  5039.  
  5040. ----------  File Specifications
  5041.  
  5042. Any combination of file specifications may be listed in the SZMOdem or
  5043. SYMOdem functions.  These must be separated with commas and may include
  5044. wildcard specifiers (*,?), the indirect file specifier (@) and any single
  5045. files.
  5046.  
  5047. If a filespec is preceded with the "@" sign, it will be assumed to be an
  5048. "indirect file."  This means that it is a text file containing a list of
  5049. filespecs.  Filespecs should be listed one per line and each line should
  5050.  
  5051.  
  5052.  
  5053.                                     -94-
  5054.  
  5055. end with a cr/lf (i.e., a normal text file).  Each filespec may contain
  5056. wildcards.  For example:
  5057.  
  5058.      c:\subdir\*.*
  5059.      info.txt
  5060.      a:*.qw?
  5061.  
  5062. TIPS on using SZMOdem:
  5063.  
  5064.  *   Some conditions that will cancel a transfer:
  5065.        1)  20 consecutive errors.
  5066.        2)  The receiver has cancelled.
  5067.        3)  Loss of carrier.
  5068.  
  5069.  *   The Exit Code (test with IFER) will be set at the end of the transfer
  5070.      and will also be stored in the variable "_err".  0 means all files
  5071.      were transferred successfully.  1 means one or more files in the batch
  5072.      were not completed.
  5073.  
  5074.  *   If the Usage Log is enabled, an entry will be made after each file is
  5075.      transferred (or if a transfer is cancelled).
  5076.  
  5077.  
  5078. ===  TOGGles  ===
  5079.  
  5080. Default key:   Alt+T
  5081. Description:   Set various toggle parameters.
  5082.  
  5083. Example:
  5084.  
  5085.      {toggles}
  5086.           Open Set Toggles window.
  5087.  
  5088.  
  5089. ===  UNLOad  ===
  5090.  
  5091. Default key:   none
  5092. Description:   Unload the current auxiliary Macro File.
  5093.  
  5094. Examples:
  5095.  
  5096.      {unload}
  5097.           No arguments.
  5098.  
  5099. The auxiliary Macro File will be released from memory.  If no auxiliary is
  5100. loaded, no action will be taken.
  5101.  
  5102. If this function is executed from the auxiliary file, a STOP will occur
  5103. after the auxiliary is released.
  5104.  
  5105. See also CALL, GOTO.
  5106.  
  5107.  
  5108.  
  5109.                                     -95-
  5110.  
  5111. ===  UNMArk  ===
  5112.  
  5113. Default key:   none
  5114. Description:   Unmark Dialing Directory entries.
  5115.  
  5116. Switches:
  5117.  
  5118.      L1 or L
  5119.           Unmark last-dialed entry only.
  5120.  
  5121.      L0
  5122.           Unmark all or listed entries (default).
  5123.  
  5124. Examples:
  5125.  
  5126.      {unmark joes-bbs,file-city}
  5127.           Unmark listed entries.
  5128.  
  5129.      {unmark}
  5130.           Unmark all entries.
  5131.  
  5132.      {unmark-L}
  5133.           Unmark last-dialed entry.
  5134.  
  5135. NOTE:  When the "L" switch is present, any Dialing Strings listed will be
  5136. ignored.
  5137.  
  5138. Dialing Strings may be separated by spaces or commas.
  5139.  
  5140. {COMMO} will search the Dialing Directory for each string and unmark the
  5141. first entry where a match is found.  Case is ignored.
  5142.  
  5143. The strings may consist of any part of a Dialing Directory entry line
  5144. (including strings contained within curly braces), but must NOT contain any
  5145. spaces, commas or curly braces.
  5146.  
  5147. See also DIAL, MARK.
  5148.  
  5149.  
  5150. ===  VIDEo  ===
  5151.  
  5152. Default key:   none
  5153. Description:   Change to an alternate hardware video mode.
  5154.  
  5155. Switches:
  5156.  
  5157.      M1 or M
  5158.           Change to the alternate display mode.
  5159.  
  5160.      M0
  5161.           Change back to the normal display mode.
  5162.  
  5163.  
  5164.  
  5165.                                     -96-
  5166.  
  5167. Examples:
  5168.  
  5169.      {video-m1}
  5170.           Change to the alternate mode.
  5171.  
  5172.      {video-m0}
  5173.           Change back to the normal mode.
  5174.  
  5175. The "alternate" mode is defined by Setup File item "avm".  The "normal"
  5176. mode is the mode in effect when you start {COMMO}.
  5177.  
  5178.  
  5179. ===  VTCUr  ===
  5180.  
  5181. Default key:   none
  5182. Description:   Define a VT102 cursor (arrow) key.
  5183.  
  5184. Example:
  5185.  
  5186.      {vtcur ^[[A|^[OA}
  5187.           Define up-arrow key strings.
  5188.  
  5189. The first string is sent when cursor mode is active; the second string is
  5190. sent when application mode is active (these modes are controlled by the
  5191. host).
  5192.  
  5193. The two strings must be separated by a "|".  Use "^m" for carriage return
  5194. if necessary.
  5195.  
  5196. See also VTPAd.
  5197.  
  5198.  
  5199. ===  VTPAd  ===
  5200.  
  5201. Default key:   none
  5202. Description:   Define a VT102 keypad key.
  5203.  
  5204. Example:
  5205.  
  5206.      {vtpad 5|^[Ou}
  5207.           Define keypad "5" key strings.
  5208.  
  5209. The first string is sent when numeric mode is active; the second string is
  5210. sent when application mode is active (these modes are controlled by the
  5211. host).
  5212.  
  5213. The two strings must be separated by a "|".  Use "^m" for carriage return
  5214. if necessary.
  5215.  
  5216. See also VTCUr.
  5217.  
  5218.  
  5219.  
  5220.                                     -97-
  5221.  
  5222. ===  WCLOse  ===
  5223.  
  5224. Default key:   none
  5225. Description:   Close the write file.
  5226.  
  5227. Example:
  5228.  
  5229.      {wclose}
  5230.           No arguments.
  5231.  
  5232. NOTE:  The write file will be closed automatically when the macro
  5233. terminates (STOP, EXIT, etc.).
  5234.  
  5235. See also WOPEn, WRITE.
  5236.  
  5237.  
  5238. ===  WINDow  ===
  5239.  
  5240. Default key:   none
  5241. Description:   Preserve window display.
  5242.  
  5243. Switches:
  5244.  
  5245.      K1 or K
  5246.           Do not allow the Terminal Screen to be restored when exiting from
  5247.           a window.
  5248.  
  5249.      K0
  5250.           Allow the Terminal Screen to be restored when exiting from a
  5251.           window (default).
  5252.  
  5253. Examples:
  5254.  
  5255.      {window-k}
  5256.           Don't restore the Terminal Screen.
  5257.  
  5258.      {wind-k0}
  5259.           Restore the Terminal Screen.
  5260.  
  5261. This function will prevent the Terminal Screen from being restored after a
  5262. window function exits.  It is useful for making smooth, flicker-free
  5263. transitions between windows or for placing one pop-up window on top of
  5264. another.
  5265.  
  5266. The condition will remain active until either the "k0" switch is used or
  5267. the macro terminates.
  5268.  
  5269.  
  5270. ===  WOPEn  ===
  5271.  
  5272. Default key:   none
  5273. Description:   Open a file for writing.
  5274.  
  5275.  
  5276.  
  5277.                                     -98-
  5278.  
  5279. Switches:
  5280.  
  5281.      A1 or A
  5282.           Open the file in "append" mode.  New lines written to the file
  5283.           will be added at the end.  If the file doesn't exist, it will be
  5284.           created.
  5285.  
  5286.      A0
  5287.           Open the file in "create" mode.  If the file exists, it will be
  5288.           erased (default).
  5289.  
  5290. Examples:
  5291.  
  5292.      {wopen c:\bbs\file.txt}
  5293.           Open the file in create mode.
  5294.  
  5295.      {wopen-a c:\data\word.fil}
  5296.           Open the file in append mode.
  5297.  
  5298. TIP on using WOPEn:
  5299.  
  5300.  *   Only one file may be opened for writing (and one for reading).
  5301.  
  5302. See also WRITe, WCLOse.
  5303.  
  5304.  
  5305. ===  WRITe  ===
  5306.  
  5307. Default key:   none
  5308. Description:   Write a string to the write file.
  5309.  
  5310. Examples:
  5311.  
  5312.      {write %nextline}
  5313.           Write the contents of the variable "nextline" to the write file.
  5314.  
  5315.      {write}
  5316.           Write a carriage return/linefeed only (blank line) to the file.
  5317.  
  5318.      {write %num%> }
  5319.           Write the contents of "num" followed by a ">" and a space.
  5320.  
  5321. TIPS on using WRITe:
  5322.  
  5323.  *   A file must be open for writing or a Macro Error will result.
  5324.  
  5325.  *   The string will be written as one line, terminated by a carriage
  5326.      return/linefeed.
  5327.  
  5328.  *   Control character conversion is NOT performed on the write string.
  5329.  
  5330.  *   A Macro Error will result if the disk is full.
  5331.  
  5332.  
  5333.  
  5334.                                     -99-
  5335.  
  5336. See also WOPEn, WCLOse
  5337.  
  5338.  
  5339.  
  5340.                                    -100-
  5341.  
  5342. For APPENDICES see Part I, COMMO.DOC.
  5343.  
  5344.